프로젝트를 진행하며 php api를 만들었습니다.
결과값을 확인하기 위해 POSTMAN을 이용하여 테스트를 진행 하고 있었습니다
값은 의도한 대로 json으로 리턴한 것을 확인하였습니다.
하지만 javascript에서 ajax로 호출하였는데 json parse 에러가 발생했습니다.
응답 header도 로그로 찍어서 확인결과 content-type: application/json 인것을 확인 하였습니다.
왜 json을 파싱을 못하는 것일까...
그래서 직접 url로 직접 접근해서 json을 받아서 json validation 체크를 해보았습니다.
https://jsonformatter.curiousconcept.com/#
JSON Formatter & Validator
Format and validate JSON data so that it can easily be read by human beings.
jsonformatter.curiousconcept.com
결과 눈에 보이지 않는 \ufeff 라는 문자를 발견했습니다.
/ufeff 는 해당 file이 어떤 문자열로 코딩되었는지를 의미하는 일종의 식별자입니다. “이 문서의 인코딩 방식은 뭐에요”라는 걸 알려주는 메타 정보인 것이죠
editplus를 이용하요 hex뷰어로 확인결과 EF BB BF hex코드들을 확인 하였다.
- 인코딩별 BOM
- UTF-8: EF BB BF
- UTF-16 BE: FE FF
- UTF-16 LE: FF FE
vscode로 파일 인코딩 타입을 확인결과 UTF-8 BOM 이었습니다.
UTF-8로 변경하여 해결하였습니다.
요약
- 눈에 보이는 것을 그대로 믿지마라 문제가 있으면 json 검증을 해보자
- 파일 인코딩 타입을 확인하자
- 파일 인코딩타입은 UTF-8을 사용하자
'트러블슈팅' 카테고리의 다른 글
[node.js]커넥션 수에 따른 속도차이 (속도개선,createPool) (0) | 2023.03.29 |
---|---|
[node.js]PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR 에러 원인 및 해결 (0) | 2023.03.29 |
[spring]@Value와 빈 생명주기(Bean LifeCycle) (0) | 2023.03.02 |