이슈
웹에서 한글이 깨지는 현상
원인
웹브라우저와 웹서버가 서로 다른 인코딩 방식을 사용
웹브라우저는 2Byte씩 처리하는 UTF-8 인코딩 방식을 사용하는데, 웹서버는 1Byte씩 처리하는 ISO-8859-1 방식으로 인코딩을 하면, 서로 다른 인코딩 방식 때문에 적절한 디코딩이 이루어지지 않는 것이다.
한글을 POST 방식과 GET 방식으로 서버에 전송하여, 서버 콘솔을 통해, 서버에 어떻게 값이 전달되었는지 확인해 보았다.
GET 방식과 POST 방식 모두 '천재승'이라는 문자가 "퍼센트 인코딩 방식"으로 인코딩이 되었음을 알 수 있다. 퍼센트 인코딩 방식은 RFC 3986 규약에 따라 표준화된 방식이다. URL를 통한 데이터 통신은 아스키코드만으로 전송되기로 규정되어있다. 하지만 아스키 코드로 표현하지 못하는 문자들이 있다. 그런 경우, 퍼센트 인코딩 방식을 사용하여 문자를 인코딩한다. 만약 브라우저가 UTF-8 인코딩 방식을 사용한다면 UTF-8 방식을 토대로 퍼센트 인코딩이 이루어진다.
그러므로 GET 방식과 POST 방식 둘다 같은 인코딩 방식으로 서버에 전달되었다. 그러나 결과는 하나는 깨짐, 하나는 정상출력이다. 원인은 웹서버에서 둘을 처리하는 인코딩 방식이 다르기 때문이다.
GET방식은 UTF-8로 디코딩되어 정상출력이되고 POST방식은 UTF-8을 ISO-8859-1 문자셋으로 인식하여 디코딩하니 문자가 깨지는 것이다. 이렇듯 브라우저와 서버간의 서로 다른 인코딩 방식은 문자의 깨짐으로 이루어진다.
참고
https://lordofkangs.tistory.com/38?category=868521
https://www.youtube.com/watch?v=ABPOjjre0C8&t=3s
'Issues' 카테고리의 다른 글
OAuth2 Login- AuthenticationSuccessHandler (0) | 2022.01.20 |
---|