Python 2.7.3rc2コードがIDE(Aptana Studio 3 with PyDev)でうまく動作するが、ダブルクリックするとクラッシュするという問題がある.pyファイルを作成するか、Windowsのコマンドラインから実行してみてください。Python unicodeはコマンドラインでクラッシュするが、IDEではクラッシュする
問題の行は、ユニコード文字を含む文字列をファイルに書き込もうとしているところです。 IDEはそれに問題はなく、Unicode文字でファイルを正しく書き込みます。コマンドラインのバージョンでは、特定の文字をエンコードできないという不満があります。
質問の根本は、IDEバージョンと、ユニコードファイルを正しく書き込むコマンドラインバージョンとの違いと、もう1つは違いますか?
理想的なソリューションは、IDEバージョンとまったく同じようにコマンドラインバージョンを使用する必要があります。
EDIT:申し訳ありませんが、私はそれは私が、文字列をファイルに書き込むために使用していたどのコマンド想定していたと思ったが、私は、Pythonに新たなんです。実際のコマンドは、f = open(path, 'w')
でインスタンス化されたオブジェクトf
で呼び出されたwrite()
です。私はファイルに書きたい文字列を渡し、その文字列にはUnicode文字が含まれています。
完全なエラーメッセージは次のとおりです。ここで
Traceback (most recent call last):
File "writer.py", line 46, in <module>
write_listings(c, output_path)
File "writer.py", line 33, in write_listings
print name
File "c:\Python27\lib\encodings\cp437.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 21-26: character maps to <undefined>
は、例えば文字列です:私はちょうどにリテラルその文字列を置くことができないので、 滑鐵盧安大略加拿大
は、残念ながら、私はトラブルSSCCEの作成を抱えています私がエンコーディングを宣言していないと不平を言っていないソースコードファイル。それはイライラしています - これはIDEからすべてを実行したときにうまく動作していましたが、現在はユニコードのウサギの穴に向かっています!
EDIT:Fredrikのおかげで、私は今SSCCEを作ることができます。ここでは、次のとおりです。コマンドラインから実行が、IDEからない
# -*- coding: utf-8 -*-
str = u'滑鐵盧安大略加拿大'
f = open('test', 'w')
f.write(str)
f.close()
このSSCCEがクラッシュします。 なぜですか?
EDIT:私はEdward Loperが提案したいくつかの追加コードを追加して、PythonのバージョンがコマンドラインとIDEバージョンで同一であることを確認しました。ここで
は新しいコードです:IDEから実行したときにここで
# -*- coding: utf-8 -*-
import sys
print sys.version
print open
print open.__module__
str = u'滑鐵盧安大略加拿大'
f = open('test', 'w')
f.write(str)
f.close()
が出力されます。コマンドラインから実行するとき
2.7.3rc2 (default, Mar 18 2012, 22:59:27) [MSC v.1500 64 bit (AMD64)]
<built-in function open>
__builtin__
そして、ここでは、出力されます。
2.7.3rc2 (default, Mar 18 2012, 22:59:27) [MSC v.1500 64 bit (AMD64)]
<built-in function open>
__builtin__
Traceback (most recent call last):
File "test.py", line 9, in <module>
f.write(str)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-8: ordinal not in range(128)
私の意見では、まだ問題が解決されていない彼はIDEであり、コマンドラインではありません!
[http://www.python.org/dev/peps/pep- 0263 /](http://www.python.org/dev/peps/pep-0263/)?ファイルの先頭に '# - * - coding:utf-8 - * - 'を追加してください –
これは単なるファイルですか、あるいはUnicode文字を使ってコンソールに何かを書いていますか? IDEのコンソールは通常、Windowsコンソールとは異なるエンコーディングを使用します。 – Fenikso
あまり役に立ちません。エラーを出したコマンドは何でしたか?そして、どのようなエラーメッセージが報告されましたか? – aitchnyu