電子書籍の厳選無料作品が豊富!

日本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ヶ月程度)ですので、時間があれば、詳しく具体的に教えていただけると助かります。

A 回答 (2件)

コマンドプロンプトの画面にも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テキストで出力されます。
改行コードがちょっと悲しいことになっていますけど。
    • good
    • 0

質問には異常終了するとありますが、


cp932に変換できないという例外が発生しているのではありませんか?

それと、どういう出力をしたいのでしょうか?
セディーユつきの部分は化けてもいいとかきちんと
表示させたいとか。

この回答への補足

cp932(Windowsで使われているShift-JISですよね?)に変換できない文字は
使えないのでしょうか?

最終的な目的は、(セディーユやアクセントの含まれる)フランス語・日本語混在のファイルを処理する
(ファイルから読み取り、別ファイルに保存する)ことです。 Python上でも正しく表示されることが
望ましいですが、文字のデータが破損せず、ファイルへの出力が正しく行われれば問題ありません。

補足日時:2009/02/26 19:25
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!