をエンコードすることはできませんが、私はすでに問題に走りました。
私はちょうど1つのコマンドで簡単なスクリプトを持っている:私はKubuntuのを使用していますPythonの3 UnicodeEncodeErrorを:「ASCII」コーデックは、私はちょうどのPythonを学ぶために始めました文字
Traceback (most recent call last):
File "hello.py", line 2, in <module>
print("P\u0159\xedli\u0161 \u017elu\u0165ou\u010dk\xfd k\u016fn \xfap\u011bl \u010f\xe1belsk\xe9 \xf3dy.")
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-2: ordinal not in range(128)
:
#!/usr/bin/env python3
print("Příliš žluťoučký kůň úpěl ďábelské ódy.") # Text in Czech
私はこのスクリプトを実行しようとすると:
python3 hello.py
を、私はこのメッセージを取得します16.04およびPython 3.5.2。 私はこれを試したときに:export PYTHONIOENCODING=utf-8
それは一時的に働いた。次回はバッシュを開いたときに同じエラーが出ました。
https://docs.python.org/3/howto/unicode.html#the-string-type によると、PythonソースコードのデフォルトエンコードはUTF-8です。
は、だから私は、ソースファイルが保存されたID UTF-8、konsoleのは、UTF-8に設定されているが、私はまだエラーを取得する必要があります!
は、私が先頭に
# -*- coding: utf-8 -*-
を追加する場合であっても、それは何もしません。
もう奇妙なこと:私だけのpythonを使用して、それを実行すると、ないのpython3は、それが動作します。 3.5.2ではなく、Python 2.7.12でどのように作業することが可能ですか?
永久にこれを解決するための任意のアイデア?ありがとうございました。問題があることも示唆どこためマークtolenのとアラステア・マコーマックへ
ですね
は
locale
を実行すると、今、この出力を返します。そのため、Unicodeを印刷するときにPythonがデフォルトで 'ascii'に設定されています。 [ファイルへの書き込みUnicodeEncodeErrorを]の –可能な複製(http://stackoverflow.com/questions/32924147/unicodeencodeerror-when-writing-to-file) –
あなたのロケールが壊れなければなりません。おそらくあなたの.bashrcはLANG = cs_CZを設定します。UTF-8'を使用していますが、チェコ語のロケールを構築/インストールしていませんか?あなたのロケールが壊れているか見つからない場合、PythonはASCIIエンコーディングにデフォルト設定されます。 Python 2で動作する理由は、文字列がバイト文字列であり、単に端末に直接書き込まれるためです。 Python 3は、端末に書き込むときに文字列をエンコードする必要があります。 –