g_convert workaround

ganadist의 이미지
6295
points
10
points

많은 gtk/gnome 프로그램에서 문자열의 인코딩을 UTF-8로 바꿀 때, 문자열의 인코딩을 알 수 없으면 iso-8859-1로 처리하도록 되어있습니다.

이부분을 python의 chardet을 이용해서 문자열 인코딩을 추측한 후 시도하도록 해보았습니다.

적용된 화면은 http://ftp.mizi.com/~ganadist/gcwa.png에서 볼 수 있습니다.
화면중 rhythmbox에서 인터넷 라디오의 태그는 euc-kr로 인코딩되어있고, 동영상 파일의 제목 태그는 shift-jis로 인코딩되어있지만, 안깨지고 제대로 나오고 있습니다.

받기: http://ftp.mizi.com/~ganadist/gcwa-0.0.2.1.tgz

필요한 것:
python 런타임
chardet python 모듈
(우분투 사용자는 universe에 있는 python-chardet 패키지를 설치하면 됩니다.)

자세한 것은 tar파일에 포함된 README를 참조하세요.

oppor의 이미지
1614
points

뜬금없지만.. 저 애니

0
points

뜬금없지만.. 저 애니 제목이 어떻게 되나요??^^;;;;

ganadist의 이미지
6295
points

코드 기아스 - 반역의

0
points

코드 기아스 - 반역의 루루슈라는 애니메이션입니다.

과감한 설정(일본이 xx국의 식민지로 전락되어서 blah blah~) 때문에 때아닌 좌익/우익 논란까지 불러일으켰습니다만, 내용만 보자면 꽤 괜찮아보입니다.

바라미의 이미지
1426
points

뜨하하...

0
points

그렇군요.. 내용상 그렇고 그런 내용이란걸 알고 절대로 손이 안가던 애니였는데..
저는 그거보단 요즘 Over Drive 를 보기 시작했답니다 :)

그외 다른 볼만한게 있으면 좋을텐데..;
(최근에 솔티레이를 봤는데, 너무나도 감동적이었습니다...;)

바라미의 이미지
1426
points

아하하....

0
points

저도 궁금했어요 .....

바라미의 이미지
1426
points

그런데

2
points

파이썬을 이용하는 거보다 다른 방법은 없을까요?
파이썬 말고도 인코디 감지 라이브러리 같은게 있을텐데요..
iconv 에도 그런거 없나요? glib 에서 iconv 도 쓰던데...
php 의 경우에는 mbstring 라이브러리 쓰면 같은 바이트 인코딩이(euc-kr, euc-jp의 경우) 아닌 이상 잘 감지해 내던데..

ganadist의 이미지
6295
points

iconv는 단순히

2
points

iconv는 단순히 문자열의 인코딩을 변환만 해줍니다. (그리고 g_convert도 내부적으로 iconv를 사용합니다.) 실패하면 단순히 NULL을 리턴합니다.

chardet의 경우에는 입력받은 문자열의 패턴을 통계적으로 분석해서 문자열의 인코딩을 추측합니다. 따라서 euc-kr인지 euc-jp인지도 구분해준다고 합니다. chardet은 원래 모질라 프로젝트에서 만들어 졌고, 여기서는 그 chardet라이브러리를 python으로 포팅된것을 python의 c api를 통해서 호출하도록 한 것입니다.

바라미의 이미지
1426
points

그렇군요..

0
points

그러면 chardet 처럼 쓸수 있는 이식성 있는 라이브러리 들은 어떤 것들이 있을까요?
물론 너무 넓은 범위의 이식성 보다는 유닉스 계열 혹은 리눅스 대부분.

이렇게 어느정도 범용성이 있는 라이브러리들은 뭐 없을까요?

ganadist의 이미지
6295
points

mozilla chardet이나 python

0
points

mozilla chardet이나 python chardet의 이식성은 좋습니다. 다만 런타임이 커질뿐;;

OOo에도 이런 라이브러리가 있을까 싶어서 검색을 해봤는데 아직 인코딩 감지기능은 없는 것 같습니다.

nohmad의 이미지
3168
points

python chardet

0
points

python chardet 라이브러리는 모질라 chardet 모듈의 로직을 보고, 완전히 pure python으로 포팅한 것이기 때문에 C API 호출이 필요없지 않나요?

----
http://nohmad.sub-port.net

ganadist의 이미지
6295
points

python chardet은

0
points

python chardet은 pure파이썬이지만, 저기 위에 언급한 것은 gcwa에서 python chardet을 쓰기 위해 c api를 사용했다는 의미입니다.

hey의 이미지
10152
points

charset의 오타인줄

0
points

charset의 오타인줄 알았더니.. =3 =33

May the F/OSS be with you..

감사합니다. 리듬박스

0
points

감사합니다.
리듬박스에서 깨진 글자들 안봐도 되서 정말 좋은데요.

댓글 보기 옵션

원하시는 댓글 전시 방법을 선택한 다음 "설정 저장"을 누르셔서 적용하십시오.