2008年10月30日木曜日

jythonの日本語周りについて

Jythonの日本語処理がよくわからないについて。
UTF-8環境と仮定して、以下のようにすれば出来ます。
(コマンドプロンプトならCP932とかにすればいいんだけど、こまったことにjythonではcodecsに"cp932"がないのでencodeでSJISバイト列に出来ません。なのでJavaのAPIで出力するのしか出来なかった)

>>> from java.lang import String, System
>>> from com.ibm.icu.text import Transliterator
>>> print Transliterator.getInstance("Fullwidth-Halfwidth").transliterate(String(u"テスト", "UTF-8")).encode("utf-8")
テスト
>>> System.out.println(Transliterator.getInstance("Fullwidth-Halfwidth").transliterate(String(u"テスト", "UTF-8")))
テスト

なぜかといえば、
>>> sys.getdefaultencoding()
'ascii'
>>> System.getProperty("file.encoding")


'UTF-8'

だからじゃないかな。

例えば、こんなのでも分かる。
>>> "テスト".decode("utf-8")
u'\uff83\uff7d\uff84'
>>> print "テスト".decode("utf-8")
Traceback (most recent call last):
  File "", line 1, in
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)



4 件のコメント:

  1. おぅ、できました!
    どうせだったらトラバ撃ってくれればよかったのに。

    返信削除
  2. Voxってトラックバック無いんだよね。
    受けられないのは、SPAMを気にしなくてもいいというメリットがあるからいいんだけど。
    手動トラックバックでもうてばいいのかな。

    返信削除
  3. http://www.boraro.gozaru.jp/blog/blog_ping-pinpin.html
    こんなのを使うとかしかないのかな…

    返信削除
  4. [this is good] In it something is also idea excellent, agree with you.

    返信削除