티스토리 뷰
😱 문제
- db에서 테스트용\\n메인배너 를 읽어서 API response 로 보내면 \\n 가 \\\\n 로 변경되어 앱에서 \\n 문자 그대로 보여짐
🤔 원인
자바 로직 내에서는 계속 \\n 로 되어 있었는데, controller 메서드에서 값을 반환하고 response로 받아보면 \\\\n 로 확인되었다
- string 을 byte 로 변환하여 확인해보니 ‘\n’ 인 10번 아스키가 아니라, ‘\’ 와 ‘n’가 붙어 있는 문자열이었다!
- JSON으로 변환 중 \\가 별도의 문자로 인식되어 한 번 더 인코딩되어 발생한 문제였음
해결
s.replaceAll("\\\\n", System.lineSeparator());
// 다른 방법. StringEscapeUtil 사용
StringEscapeUtil.unescapeJava(s);
참고
https://www.geeksforgeeks.org/how-to-handle-newlines-in-json/
https://stackoverflow.com/questions/42572684/replace-n-by-in-java
'Web' 카테고리의 다른 글
| J2EE 스펙 정리 (0) | 2024.02.26 |
|---|---|
| 웹에서의 문자 (0) | 2023.06.20 |
| REST란 무엇인가? (0) | 2021.12.22 |
| HTTP Method 7가지 (0) | 2021.12.22 |
| 웹 소켓 (0) | 2021.11.11 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ActiveAdmin
- Encoding
- SHA
- Git
- 사고..
- IntelliJ
- 이펙티브자바
- annotation
- 이벤트스토밍
- SQL 전문가 가이드
- gitignore
- aws
- WebClient
- ASCII
- 메모리 릭
- point
- DesignSystem
- 코테 log
- fetchResults
- Java
- Spring-Boot
- Lombok
- querydsl
- sort algorithm
- Generic
- 암호화
- 실용주의
- effective-java
- TroubleShooting
- ruby
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
글 보관함