한글이 깨졌다
한글이 깨지는 이유
기본적으로 서버가 클라이언트에게 보내는 인코딩은 유럽에서 사용되는 ISO-8859-1입니다.
이 방법에서는 1바이트로 분할되어 클라이언트로 전송됩니다.
한글은 2바이트를 기반으로 하기 때문에 클라이언트 측에서 볼 수 없습니다.
웹서버에서 utf-8로 보내도 웹브라우저가 다르게 해석하면 깨집니다.
utf-8로 인코딩할 때 매번 2바이트가 전송되도록 지정해야 합니다.
utf-8 인코딩을 설정하면 한 번에 2바이트씩 보내므로 물음표였던 것이 외국어로 나온다.
이 경우 브라우저 측에서 디코딩 방법을 utf-8로 설정하면 해결할 수 있습니다.
*정리하다
물음표로 나오는 것은 이체 초기부터의 오류이므로 고칠 수 없습니다.
외래어는 인코딩과 디코딩을 일치시켜 풀 수 있습니다.
보내는 쪽에서 수행하려면 다음을 수행하십시오.
한글은 utf-8로 보내드리겠지만 한글이 해석할 수 있는 다양한 인코딩 방법 중 utf-8을 사용해야 한다는 점을 꼭 말씀해주셔야 합니다.
resp.setCharacterEncoding(“UTF-8”) : UTF-8 인코딩으로 전송 설정
resp.setContentType(“text/html; charset=utf-8”) : 받는 사람에게 text/html 형식을 읽고 utf-8로 디코딩하도록 지시합니다.
콘텐츠 유형 정보는 헤더에 포함되어 있으므로 브라우저는 유형에 따라 콘텐츠를 디코딩하고 해석합니다.
(HTML의 경우
-텍스트가 아닌 태그로 인식되는 태그)
setContenthType이 서버 측에서 설정되지 않은 경우 응답 메시지 헤더에는 콘텐츠 유형에 대한 정보가 포함되지 않으므로 브라우저는 기본 설정으로 읽을 수 밖에 없습니다.
IntelliJ에서 프로젝트 인코딩이 utf-8이 아니면 브라우저에서 서버로부터 받은 HTML 파일은 한글이 깨지더라도 근데 동적으로 처리된 글이 한글 깨져서 나오는데…