[英]Why did I get UnicodeDecodeError when I read a file which contains Chinese characters?
[英]Why I cannot save file with Chinese characters when using Python 2.7.11 IDLE?
我剛剛從它的官方網站下載了最新的Python 2.7.11 64bit,並將其安裝到我的Windows 10。我發現如果新的IDLE文件包含漢字,比如你好,那么我無法保存文件。 如果我多次嘗試保存它,那么新文件就會崩潰並消失。
我也安裝了最新的python-3.5.1-amd64.exe,也沒有這個問題。
如何解決?
更多:來自wiki頁面的示例代碼, https://zh.wikipedia.org/wiki/%E9%B8%AD%E5%AD%90%E7%B1%BB%E5%9E%8B
如果我通過此處的代碼,StackOverflow 會警告我:Body cannot contain "I just dow"。 為什么?
謝謝!
更多:我找到了這個配置選項,但它根本沒有幫助。 IDLE -> 選項 -> 配置 IDLE -> 常規 -> 默認源編碼:UTF-8
Python 2.x 使用 ASCII 作為默認編碼,而 Python 3.x 使用 UTF-8。 只需使用:
my_string.encode("utf-8")
將 ascii 轉換為 utf-8(或將其更改為您需要的任何其他編碼)
您也可以嘗試將此行放在代碼的第一行:
# -*- coding: utf-8 -*-
Python 2 使用 ASCII 作為其不能存儲中文字符的字符串的默認編碼。 另一方面,Python 3 的字符串默認使用 Unicode 編碼,可以存儲漢字。
但這並不意味着 Python 2 不能使用 Unicode 字符串。 您只需將字符串編碼為 Unicode。 下面是將字符串轉換為 Unicode 字符串的示例。
>>> plain_text = "Plain text"
>>> plain_text
'Plain text'
>>> utf8_text = unicode(plain_text, "utf-8")
>>> utf8_txt
u'Plain_text'
字符串utf8_txt
中的前綴u
表示它是一個 Unicode 字符串。
你也可以這樣做。
>>> print u"你好"
>>> 你好
您只需要在您的字符串前加上u
來表示它是一個 Unicode 字符串。
在 Windows 上使用 Python 2 時:
對於要保存在 IDLE 中的具有 Unicode 字符的文件,一行
# -*- coding: utf-8 -*-
必須在其開頭添加。
為了使 Unicode 字符在 Windows 的控制台輸出中正確顯示,如果運行腳本,保存在文件中,在 IDLE 控制台或 Windows shell 中,字符串必須以u
開頭:
print u"你好" print u"Привет"
但是在交互模式下,我發現西里爾字母不需要這個。
即使在 python 3.7 中我仍然遇到同樣的問題,UTF-8 仍然可以解決問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.