charset을 euc-kr->utf-8 또는 utf-8->euc-kr로 변환했을 때 깨지는 이유
- 구조가 다른 charset으로의 변환(인코딩과 디코딩을 서로 다른 charset으로 변환)
참조 1
참조 2
참조 3
- 서블릿은 문자열의 인코딩이 ISO-8859-1에서 x-www-formed-urlencoded로 인코딩되었다고 가정하고 해석하기 때문에 한글이 깨진다.
ISO-8859-1 -> x-www-formed-urlencoded -> Unicode -> ISO-8859-1 byte배열 추출 -> KSC5601인코딩으로 변환
※ 한글문제 [출처] http://cafe.naver.com/flex4u/1991
자바는 문자열과 바이트 스트림을 다르게 취급한다.
자바의 스트링은 유니코드의 문자셋을 사용하며 문자열을 파일에 쓰거나 네트워크로 전송하는 등 실제 입출력이 일어날 때는 문자열을 바이트 스트림으로 변환하게 된다. 이 때 바이트 스트림으로 변환하는 규칙이 인코딩이다. 따라서 바이트 스트림으로 전달된 것을 문자열로 바꾸거나 문자열을 바이트 스트림으로 전달할 때는 반드시 인코딩을 지정해야한다.
댓글 없음:
댓글 쓰기