PyCharmと私が取り組んでいるPythonアプリケーションで非常に奇妙な問題があります。PyCharmで実行されているPython 3.6スクリプトでUTF-8でエンコードされたファイルを開く2016.3.2
- PycharmはPyCharmコミュニティ版2016年3月2日
- あるプロジェクトインタプリタがある:私はいくつかの時間のための解決策をグーグルでてきたのですとおり3.6.0
- OSはMacOSのシエラ
です提案されたアイデアは私がここで尋ねるのを助けません。
は、私は次のコードを使用してUTF-8でエンコードされたファイルを開くようにしたい:PyCharmで実行した場合
#!/usr/bin/env python3
import os, platform
def read(file):
f = open(file, "r")
content = f.read()
f.close()
return content
print(platform.python_version())
print(os.environ["PYTHONIOENCODING"])
content = read("testfile")
print(content)
コードがクラッシュします。
./file.py
3.6.0
utf-8:surrogateescape
I am a file with evil unicode characters: äöü
私は同等の状況では、人々は、変数PYTHONIOENCODING
に環境を設定することをお勧めしていることを見出した:出力は、私は、コマンドラインから、同一のコードを実行すると、それだけで正常に動作
3.6.0
UTF-8
Traceback (most recent call last):
File "/Users/xxx/Documents/Scripts/pycharmutf8/file.py", line 14, in <module>
content = read("testfile")
File "/Users/xxx/Documents/Scripts/pycharmutf8/file.py", line 7, in read
content = f.read()
File "/usr/local/Cellar/python3/3.6.0_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 5: ordinal not in range(128)
です>ビルド - 私は(あなたが出力の上で見ることができるように)システム全体の
export PYTHONIOENCODING=utf-8:surrogateescape
もPyCharm自体(設定でやったutf-8:surrogateescape
- >コンソール - > Pythonコンソール - >環境変数)。
これは何の効果もありません。さらなる提案はありますか?
は 'open'は、'エンコーディングを推測するために 'locale.getpreferredencoding(false)を使用していますナル。 – MatsLindh