为什么我在使用Python 2.7.11 IDLE 时无法保存中文文件?
Why I cannot save file with Chinese characters when using Python 2.7.11 IDLE?
刚从官网下载了最新的Python2.7.11 64bit安装到我的Windows10上,发现新的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
如果我通过此处的代码,Whosebug 会警告我:正文不能包含 "I just dow"。为什么?
谢谢!
更多:
我找到了这个配置选项,但它根本没有帮助。
IDLE -> 选项 -> 配置 IDLE -> 常规 -> 默认源编码:UTF-8
更多:
在中文代码前加上u
,就万事大吉了,好办法。像下面这样:
如果没有 u
,有时它会出现损坏的代码。像下面这样:
Python 2.x 使用 ASCII 作为默认编码,而 Python 3.x 使用 UTF-8。只需使用:
my_string.encode("utf-8")
将 ascii 转换为 utf-8(或将其更改为您需要的任何其他编码)
您也可以尝试将此行放在代码的第一行:
# -*- coding: utf-8 -*-
Python 2 使用ASCII 作为其不能存储汉字的字符串的默认编码。另一方面,Python3的字符串默认使用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'
字符串中的前缀u
,utf8_txt
,表示它是一个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 仍然有效
刚从官网下载了最新的Python2.7.11 64bit安装到我的Windows10上,发现新的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
如果我通过此处的代码,Whosebug 会警告我:正文不能包含 "I just dow"。为什么?
谢谢!
更多: 我找到了这个配置选项,但它根本没有帮助。 IDLE -> 选项 -> 配置 IDLE -> 常规 -> 默认源编码:UTF-8
更多:
在中文代码前加上u
,就万事大吉了,好办法。像下面这样:
如果没有 u
,有时它会出现损坏的代码。像下面这样:
Python 2.x 使用 ASCII 作为默认编码,而 Python 3.x 使用 UTF-8。只需使用:
my_string.encode("utf-8")
将 ascii 转换为 utf-8(或将其更改为您需要的任何其他编码)
您也可以尝试将此行放在代码的第一行:
# -*- coding: utf-8 -*-
Python 2 使用ASCII 作为其不能存储汉字的字符串的默认编码。另一方面,Python3的字符串默认使用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'
字符串中的前缀u
,utf8_txt
,表示它是一个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 仍然有效