[완료] Windows 환경에서 UCS-2 to CP949
글쓴이: sosuri78 / 작성시간: 목, 2007/11/15 - 2:33오후
Windows 에서 KS_X_1005_1 로 되어 있는것을 화면에 출력해야 하는데
WideCharToMultiByte를 사용해서 CP949로 변환해서 출력하면 글씨가
모두 깨져 보입니다.
그래서 해당 문자열을 리눅스에서 iconv library 이용해서 변환해보면 정상적으로
CP949로 변환되어 화면에 출력이 됩니다.
iconv_t cd = iconv_open("CP949", "UCS-2");를 이용
원본 HEX (KS_X_1005_1)
0000000: c5f0 d76c b85c 0020 b3d9 c2e0 bcd1 c6d0 ...l.\. ........ 0000010: 0020 21d2 0020 c5f0 d76c c9c0 d558 cc28 . !.. ...l...X.( 0000020: b3c4 0020 c591 bc29 d5a5 0020 c815 ccb4 ... ...)... .... 0000030: 0d0a
변환된 HEX (CP949) (연희로 동신병원 ⇒ 연희지하차도 양방향 정체)
0000000: bfac c8f1 b7ce 20b5 bfbd c5ba b4bf f820 ...... ........ 0000010: a2a1 20bf acc8 f1c1 f6c7 cfc2 f7b5 b520 .. ............ 0000020: bee7 b9e6 c7e2 20c1 a4c3 bc0d 0a ...... ......
하지만 문제는 현재 윈도우 환경에서 iconv 라이브러리를 사용할 여건이 안되서 windows
라이브러리만 사용해야 합니다.
윈도우에서는 아래 와 같이 하면 iconv 와 결과가 다르게 나옵니다.
*outlen = WideCharToMultiByte(949, 0, (wchar_t *)inbuf, -1, NULL, 0, NULL, NULL); WideCharToMultiByte(949, 0, (wchar_t *)inbuf, -1, outbuf, *outlen, NULL, NULL);
윈도우에서 WideCharToMultiByte를 이용해서 변환된 결과
HEX (?泗岸???톼탆??X??泗색壕?~]J??????~J????^@)
0000000: 3fde dfe4 cd3f 3f3f c5ed b56d 3fb8 983f ?....???...m?..? 0000010: 3fde dfbb f6fb bd3f 9d4a 3f3f 3f3f 3f3f ?......?.J?????? 0000020: 8abf 3f3f 3f3f 000d 0a ..????...
Windows에서 사용하하는 WideChar가 Unicode 가 아닌지 뭐가 잘못되었는지 궁금합니다.
Forums:
자답
CP949 스트링을 iconv 와 MultiByteToWideChar 를 통해 얻어온 비교해보니 Endian 이 서로 다르군요 ㅠㅠ
원문 "연희로 동신병원 ⇒ 연희지하차도 양방향 정체"
MultiByteToWideChar 를 통해 얻은 결과
iconv 를 통해 얻은 결과
댓글 달기