我剛開始學習Python,但是我已經遇到了麻煩。
我那裏有一個命令一個簡單的腳本:Python 3 UnicodeEncodeError:'ascii'編解碼器不能編碼字符
#!/usr/bin/env python3
print("Příliš žluťoučký kůň úpěl ďábelské ódy.") # Text in Czech
當我嘗試運行此腳本:
python3 hello.py
我得到這個消息:
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)
我使用的Kubuntu 16.04和Python 3.5.2。 當我試過這個:export PYTHONIOENCODING=utf-8
它的工作,但只是暫時的。下一次我打開bash,我得到了同樣的錯誤。按照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,它的工作原理。如何在Python 2.7.12而不是3.5.2中工作?
任何想法永久解決這個問題?謝謝。
這聽起來像您的環境不支持UTF-8的正確配置。這就是爲什麼Python在打印Unicode時默認爲'ascii'的原因。 –
寫入文件時可能出現[UnicodeEncodeError]重複(http://stackoverflow.com/questions/32924147/unicodeencodeerror-when-writing-to-file) –
必須打破您的語言環境。也許你的.bashrc設置'LANG = cs_CZ。UTF-8「,但你還沒有建立/安裝捷克語區域?如果您的區域設置損壞或丟失,Python將默認爲ASCII編碼。它在Python 2中工作的原因是因爲該字符串是一個字節字符串,並且將直接寫入您的終端。在寫入終端時,Python 3需要對字符串進行編碼 –