한글과 콘텐츠 형식 출력하기 (인코딩


한글과 콘텐츠 형식 출력하기 (인코딩 1

한글이 깨졌다

한글이 깨지는 이유


한글과 콘텐츠 형식 출력하기 (인코딩 2

기본적으로 서버가 클라이언트에게 보내는 인코딩은 유럽에서 사용되는 ISO-8859-1입니다.

이 방법에서는 1바이트로 분할되어 클라이언트로 전송됩니다.

한글은 2바이트를 기반으로 하기 때문에 클라이언트 측에서 볼 수 없습니다.

웹서버에서 utf-8로 보내도 웹브라우저가 다르게 해석하면 깨집니다.

utf-8로 인코딩할 때 매번 2바이트가 전송되도록 지정해야 합니다.


한글과 콘텐츠 형식 출력하기 (인코딩 3

utf-8 인코딩을 설정하면 한 번에 2바이트씩 보내므로 물음표였던 것이 외국어로 나온다.

이 경우 브라우저 측에서 디코딩 방법을 utf-8로 설정하면 해결할 수 있습니다.


한글과 콘텐츠 형식 출력하기 (인코딩 4
EUC-KR 절차를 사용하여 읽을 때 한글에 결함이 있지만 유니코드에서 적합한 한글로 표시됩니다.

*정리하다

물음표로 나오는 것은 이체 초기부터의 오류이므로 고칠 수 없습니다.

외래어는 인코딩과 디코딩을 일치시켜 풀 수 있습니다.

보내는 쪽에서 수행하려면 다음을 수행하십시오.

한글은 utf-8로 보내드리겠지만 한글이 해석할 수 있는 다양한 인코딩 방법 중 utf-8을 사용해야 한다는 점을 꼭 말씀해주셔야 합니다.


한글과 콘텐츠 형식 출력하기 (인코딩 5
utf-8을 디코딩하고 텍스트를 HTML로 읽도록 resp.setContentType을 설정합니다.

resp.setCharacterEncoding(“UTF-8”) : UTF-8 인코딩으로 전송 설정

resp.setContentType(“text/html; charset=utf-8”) : 받는 사람에게 text/html 형식을 읽고 utf-8로 디코딩하도록 지시합니다.


한글과 콘텐츠 형식 출력하기 (인코딩 6
콘텐츠 유형 정보가 포함된 헤더

콘텐츠 유형 정보는 헤더에 포함되어 있으므로 브라우저는 유형에 따라 콘텐츠를 디코딩하고 해석합니다.

(HTML의 경우
-텍스트가 아닌 태그로 인식되는 태그)


한글과 콘텐츠 형식 출력하기 (인코딩 7
콘텐츠 유형 정보가 없는 헤더

setContenthType이 서버 측에서 설정되지 않은 경우 응답 메시지 헤더에는 콘텐츠 유형에 대한 정보가 포함되지 않으므로 브라우저는 기본 설정으로 읽을 수 밖에 없습니다.


한글과 콘텐츠 형식 출력하기 (인코딩 8

IntelliJ에서 프로젝트 인코딩이 utf-8이 아니면 브라우저에서 서버로부터 받은 HTML 파일은 한글이 깨지더라도 근데 동적으로 처리된 글이 한글 깨져서 나오는데…