libiconv - 오류 ISO-2022-JP?
캐릭터셋 인코딩에 관한한 libiconv 를 사용하면 모든 변환을 100% 할 수 있을
것이라는 믿음을 무참히도 깨는 예가 있습니다.
제가 확인한 바에 의하면, libiconv 라는 라이브러리가 거의 믿을 게 못되는 수준인데
다른 사람들 경험은 어떤지 모르겠네요.
디코딩 안되는 예 (1)
파일명에서 발견된 글자: Ehwa_-_order_n=B0_21858-94748.pdf
Quoted-Printable 입니다. 중간에 =B0 에 해당하는 부분이, ISO-8859-1 로 인코딩된
특수 문자인데 (0xB0), "섭씨 몇 도"할 때 온도를 나타내는 오른쪽 윗 동그라미 글자입니다.
한글 코드에는 (˚)라는 글자가 있는데, 그리고 UTF-8에도 해당 글자가 있는데,
EUC-KR로 매핑하거나, UTF-8로 매핑하려고 하면 libiconv 가 매핑을 못하네요.
디코딩 안되는 예 (2):
^[$B%^%9%?!<%5!<%PE}9gEy$N;Y1g^[(B
일본어 ISO-2022-JP 로 된 문자열입니다. ^[ 는 두 글자가 하나고 'Escape'문자
한글자입니다.
이 문자열에 대해서 중간중간에 해석 못하는 글자가 끼어 있네요. UTF-8로 보낼 때는
깨지지 않는데, 그것을 EUC-KR로 보내려고 하니 중간에 좀 문제가 있네요.
윈도우즈 브라우저에서 보면: マスターサーバ統合等の支援 이렇게 잘 해석하는데,
중간에 'ー'이라는 한일(一)자도 아닌 것이, 대쉬(-)도 아닌 것이 끼어 있는 바람에
디코딩이 잘 안되네요. //TRANSLIT 옵션이 "유사한 문자로 매핑" 이라는 개념인데
이런 경우에 써 먹으라는 게 아닌가요?
제가 libiconv에 너무 많은 것을 바라는 것인가요?
#include <stdio.h>#include
일본어의 긴 - 는
일본어의 긴 - 는 카타카나의 장음 표기입니다. 이걸 마이너스(-)로 대체할 수는 없지요.
한글의 ㅡ(으)를 ASCII로 변환할 때 마이너스(-)로 적당히 변환할 수 없는 것과 같은 이유입니다.
재미있는건 SJIS/ISO-2022-JP를 EUC-KR로 변환할 때, 일본어 문자셋에 있는 장음 기호가
EUC-KR에는 없습니다. 하지만 가나 문자는 들어 있습니다.
따라서 장음 기호는 대체가 안되고 글자가 없어지거나 ? 등으로 대체되지요.
EUC-KR에는 일본어 가나 문자가 들어 있어서 이럴 때 편리한 점도 있지만, 장음 기호같은 기본적인
기호가 없는 것도 골치입니다. 따라서 ISO-2022-JP -> EUC-KR이 제대로 되리라고
처음부터 기대하지 않는 편이 좋습니다. (일본어 문자열을 한글 문자열로 바꿀 수 없지요.
EUC-KR안에 가나 문자가 들어있기 때문에 발생하는 일종의 착시라고 보시면 됩니다)
--
익스펙토 페트로눔
--
익스펙토 페트로눔
그동안 그냥 무심코
그동안 그냥 무심코 지나쳤었는데, 글을 읽고나서
iso-2022-jp -> euc-kr
이라는 변환자체가 비극이라는 걸 깨달았습니다.아주... 환장하겠네요.
http://htmlhelp.com/reference
http://htmlhelp.com/reference/charset/
소스에 버그가 있음이 밝혀졌습니다 ㅠ.ㅠ
땜빵수정.
댓글 달기