- 締切済み
Pythonで非日本語のUnicode文字が使えない
日本Pythonユーザ会が配布している、Windows用のPython2.6.1を使用していますが、 日本語以外のUnicode文字、アクセントのあるフランス語やウムラウトのあるドイツ語を 「Unicode文字として」扱うと、強制終了してしまいます。 たとえば UTF-8 で保存した test.py # encoding: utf-8 txt = u"日本語、にほんご、Japanese" print txt raw_input() は正しく実行・表示できますが、 # encoding: utf-8 txt = u"Français" print txt raw_input() とすると実行しても強制終了されてしまいます。 "u" を外すと "Franテァais" と表示してくれますが…。 どうすればフランス語の文字などを扱えるのでしょうか? Python初心者(1ヶ月程度)ですので、時間があれば、詳しく具体的に教えていただけると助かります。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- sakusaker7
- ベストアンサー率62% (800/1280)
コマンドプロンプトの画面にもcp932に含まれないアクセントつきアルファベット のような文字をきちんと表示させること自体は可能です。 しかし、それをPythonからやるのは大変なので、いったんファイルに出力してよいのなら そうしたほうが断然楽です。 #encoding: utf-8 from __future__ import print_function txt = u"Francais" f = open("output.txt", "w") #print >>f, txt.encode('UTF-16')←2.5までならこっち print(txt.encode('UTF-16'), file=f) f.close() こんな感じ。 output.txt にUnicodeテキストで出力されます。 改行コードがちょっと悲しいことになっていますけど。
- sakusaker7
- ベストアンサー率62% (800/1280)
質問には異常終了するとありますが、 cp932に変換できないという例外が発生しているのではありませんか? それと、どういう出力をしたいのでしょうか? セディーユつきの部分は化けてもいいとかきちんと 表示させたいとか。
補足
cp932(Windowsで使われているShift-JISですよね?)に変換できない文字は 使えないのでしょうか? 最終的な目的は、(セディーユやアクセントの含まれる)フランス語・日本語混在のファイルを処理する (ファイルから読み取り、別ファイルに保存する)ことです。 Python上でも正しく表示されることが 望ましいですが、文字のデータが破損せず、ファイルへの出力が正しく行われれば問題ありません。