Index > MacOSXでjythonする場合の文字コードへの配慮
Sun, August 20, 2006

MacOSXでjythonする場合の文字コードへの配慮

MacOSX の JavaVM はデフォルトの文字エンコーディングが ShiftJIS になっているようだ。 しかし、Terminal は(デフォルトでは)UTF-8 なので、 もし、 jythonコード中に日本語を含めたり、コンソールに日本語で文字列を出力する場合は、 その辺に注意する必要がある。

  1. jythonコード中で日本語を直接扱いたい場合は、そのコードを書いたファイルのエンコーディングをSJISにしておく
  2. コンソールに標準出力する場合は、UTF-8 に変換して出力する(すなわちprintは使えない)

したがって、 str="ほげ" print str

のようなコードは、以下のように書いた上で、ファイル自体はSJISにしておく。

str="ほげ"
pw=io.PrintWriter( io.OutputStreamWriter(lang.System.out,"UTF-8")  )
pw.println( str )
pw.close()

面倒ですね。

print処理などで、 jythonが文字エンコーディングをどうやって決めているかわかっていれば、 その設定をしてやればOKだと思う。 すくなくともデフォルトでは、JavaVMのエンコーディングを引き継ぐようなので、 明示的にjythonで扱うエンコーディングをUTF-8 に設定できれば、 こんなややこしいことにはならない。

 Twitter
follow me on Twitter
 Categories