JakduK / jakduk-api

K League Community Web Application
https://jakduk.com
MIT License
23 stars 19 forks source link

최근 댓글 이모지 깨짐 #357

Open silverprize opened 4 years ago

silverprize commented 4 years ago

최근 댓글 API 깨짐

스크린샷 2019-10-02 오후 7 55 12 스크린샷 2019-10-02 오후 7 55 17

댓글 API 정상

스크린샷 2019-10-02 오후 7 55 32 스크린샷 2019-10-02 오후 7 55 48
Pyohwan commented 4 years ago
스크린샷 2019-10-11 오전 12 03 43

DB에 저렇게 들어가 있네요.

Pyohwan commented 4 years ago

@silverprize 차이가 나는 이유는 홈에서는 html tag 를 제거하는거고, 글의 댓글에는 그대로 보여주니깐 다름. 근데 가운데 성별 이모지는 왜 넣었나요?

silverprize commented 4 years ago

@Pyohwan 첨부 이미지는 같은 데이터를 API마다 다르게 준다는 설명입니다. 댓글API 정상에 보이는게 입력한 데이터입니다.

Pyohwan commented 4 years ago

@silverprize 댓글의 값을 일관되게 받고 싶은 건가요? 홈에서 댓글을 110 length 잘라서 주는 이유때문에 차이가 나는거 같네요.

silverprize commented 4 years ago

@Pyohwan 당연한 말씀을

Pyohwan commented 4 years ago

@silverprize 그럼 jakduk-web 에서 댓글 길이가 길면 짤라주고, 이미지 태그 같은 html 태그 있다면, 제거해서 보여줄건가요?

silverprize commented 4 years ago

@Pyohwan 제가 바라는 일관성은 content값이 똑같아야 한다는게 아니라 입력한 문자가 다른 문자로 바뀌지 않아야 한다는 말입니다.

Pyohwan commented 4 years ago

DB에 저장한 값고 API 응답의 값은 동일함

silverprize commented 4 years ago

@Pyohwan 안보이는 문자가 숨어있습니다. 이모지 부분만 string length 출력해보면 위에건 16, 아래건 20 나옵니다. 안보이는 문자가 손실되어 한글자로 렌더링될 이모지가 두글자로 나뉘어 렌더링됩니다.

Pyohwan commented 4 years ago

@silverprize

jakduk-api 에서 댓글 입력 받을때, 컨트롤러에서

2019-10-18 00:05:02,239 [http-nio-8080-exec-10] [INFO ] [BoardRestController.writeArticleComment:230] - request board : FREE, seq : 366, body : WriteArticleComment{content='<p>🏃‍♀️🏃‍♂️🚴‍♀️🚴‍♂️</p>', galleries=[]}
2019-10-18 00:05:02,240 [http-nio-8080-exec-10] [INFO ] [BoardRestController.writeArticleComment:231] - content length : 27

홈에서 댓글 가져오는 API 수행시, DB 에서 가져왔을 때

2019-10-18 00:12:40,680 [http-nio-8080-exec-2] [INFO ] [ArticleService.lambda$getLatestComments$13:407] - comment id: 5da880a839badd0938b2dde2, content : 🏃‍♀️🏃‍♂️🚴‍♀️🚴‍♂️, length : 20
2019-10-18 00:12:40,680 [http-nio-8080-exec-2] [INFO ] [ArticleService.lambda$getLatestComments$13:409] - strip comment : 🏃♀️🏃♂️🚴♀️🚴♂️, length : 16

결론은 length 20 -> 16 이 되었네요. html tag 벗겨내는 Jsoup 라이브러리를 사용하는데 이쪽을 봐야 할것 같네요.

Pyohwan commented 4 years ago

@silverprize 마땅히 다른 라이브러리도 없네요. 그냥 정규식으로..

Pyohwan commented 4 years ago

@silverprize 정규식도 예외처리하는게 너무 힘듦

Pyohwan commented 4 years ago

일단 이대로 가시죠. 다른 대안도 없고, Jsoup 쪽에 이슈 남겨뒀어요. https://github.com/jhy/jsoup/issues/1269

frostblazergit commented 4 years ago

Hello, I hope this solves your problem.

https://github.com/jhy/jsoup/issues/1269#issuecomment-548235222