g_convert workaround

ganadist의 이미지

많은 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의 이미지

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

ganadist의 이미지

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

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

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

바라미의 이미지

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

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

바라미의 이미지

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

바라미의 이미지

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

ganadist의 이미지

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

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

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

바라미의 이미지

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

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

ganadist의 이미지

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

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

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

nohmad의 이미지

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

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

ganadist의 이미지

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

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

hey의 이미지

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

May the F/OSS be with you..



----------------------------
May the F/OSS be with you..


netkiss의 이미지

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

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.