• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:macでJythonの文字コードについての質問です)

macでJythonの文字コードについての質問です

このQ&Aのポイント
  • JavaとJythonでやりとりをする際の文字コードについての質問です。
  • Jythonを使ってJavaとどのようにやり取りするのか、色々と試そうと思ったのですが、文字コードの指定に関してエラーが発生してしまいます。
  • 日本語を使って開発を行いたい場合、どのように設定すれば良いのかわからず困っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

ターミナルからpythonとして実行されるのは、俗にCPythonと呼ばれるCで書かれたPythonで、Jythonのではありません。 /Users/Home/jython2.5.2/Lib/encodings にファイルは存在するようなので、Jythonがそれを見付けられない、というのが原因と思われます。 import sys print sys.path としてライブラリ検索パスを調べて、そこに /Users/Home/jython2.5.2/Lib が含まれているかどうか、含まれていないなら、どこか置き場所としてよさそうな場所が無いか、調べてみてください。

koro_210
質問者

お礼

遅くなりましたが、 kmeeさんの回答を元に、jythonのライブラリにそもそも_codecs_jpというモジュールが無いのだと気づき、 それを元に今日、解決に至ることが出来ました。 本当にありがとうございました。

koro_210
質問者

補足

ご回答頂き、ありがとうございます。 解決には至れていませんが、ご教授頂いたことで大変見通しが良くなりました。 CPythonで、そのコマンドを入力した時のリストはとても数が多く、 ['', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC', '/Library/Python/2.7/site-packages'] 一方Jythonでそのコマンドを入力した場合は、 わずか ['', '/Users/Home/jython2.5.2/Lib', '__classpath__', '__pyclasspath__/', '/Users/Home/jython2.5.2/Lib/site-packages'] でした。しかし、Libは含まれていました。 また問題であった、IDEのeclipseで、 そのコマンドのみのスクリプトを書きまして、スクリプトだけを実行したところ、 コンソール画面にはプロジェクトのパス+CPythonでのリストが表示されました。 javaプロジェクトから、このスクリプトを呼び出した場合には、 ['/Users/Home/jython2.5.2/Lib', '__classpath__', '__pyclasspath__/'] となり、Jythonのパスになっていました。 ターミナルのJythonからや、Javaプロジェクト上からがダメで、Eclipseでスクリプトだけを実行した時上手くいったのも、 ご指摘のように、全てJythonのライブラリの認識に問題があるのかなと自分でも理解できました。 encordingsが読まれているかどうかについて、解決の役に立つかわかりませんが(自分でも何をやっているかよく分からないのですが) 入力補完機能の力を借りて適当にアクセスしてみました。 import encodings print encodings.ascii と言った形のスクリプトを、javaプロジェクト上から呼んだ場合は <module 'encodings.ascii' from '/Users/Home/jython2.5.2/Lib/encodings/ascii$py.class'> となり、読みこめてはいるのかなと思いました。 同様に import encodings print encodings.shift_jis としますと スクリプト単体実行では <module 'encodings.shift_jis' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/encodings/shift_jis.pyc'> と表示されますが、 javaプロジェクトからの呼び出しですと Exception in thread "main" Traceback (most recent call last): File "script/test.py", line 2, in <module> print encodings.shift_jis File "/Users/Home/jython2.5.2/Lib/encodings/shift_jis.py", line 7, in <module> import _codecs_jp, codecs ImportError: No module named _codecs_jp と出ました(また、ターミナルからCPhythonを呼んで同様のことをすると、AttributeErrorでした)

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

Jython そのものは使ったこと無いですが、ひとまずPythonの範囲でできることを。 > LookupError: unknown encoding 'shift_jis' encodingには Pythonのライブラリ/encodings/コード名.py? というファイルが使われます。このディレクトリにないものは認識できません。 MacOS付属のだったら /usr/lib/python2.X/encodings の下です。Jython用はちょっとわかりません。 ここにshift_jis.py?が無いのでしょう。 Jythonのインストールガイドを読んで、ライブラリを入手するか、cp932等の代替できるコードを使うかしてください。

koro_210
質問者

補足

回答いただき有難う御座います。 さっそくみてみたのですが、 /usr/lib/以下にはpython2.7と2.6と2.5があり、全てのencordingsにshift_jisと名のつくものは同じだけ有り、 shift_jis_2004.py、shift_jis_2004.pyc、shift_jis_2004.pyo、shift_jis.py、shift_jis.pyc、shift_jis.pyo、shift_jisx0213.py、shift_jisx0213.pyc、shift_jisx0213.pyoでした。 ターミナル上からpythonを実行して >>> unicode("ああああ","Shift_JIS") と入力すると u'\u7e3a\u3085\u2260\u7e3a\u3085\u2260' となり、エラーも無いようでした。 jythonのインストール先はホームディレクトリにしたのですが、その /Users/Home/jython2.5.2/Lib/encodings にはshift_jisと名がつくものとして、 shift_jis_2004.py、shift_jis.py、shift_jis$py.class、shift_jisx0213.py の4つがあるようでした。 shift_jisはjython2.2.2以降では、標準で添付されてるとのことです。

関連するQ&A