使用Python 2.7.11 IDLE时为什么我不能用中文保存文件?

时间:2015-12-28 15:02:47

标签: python file python-2.7 python-idle

我刚刚从其官方网站下载了最新的Python 2.7.11 64位并将其安装到我的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不能包含“我只是道琼斯”。为什么?

谢谢!

enter image description here

更多: 我找到了这个配置选项,但它根本没用。 IDLE - >选项 - >配置IDLE - >一般 - >默认源编码:UTF-8

更多: 通过在中文代码之前添加this.state.items,一切都会正确,这是很好的方式。如下所示: enter image description here

如果没有getCheckedItems: function() { return this.state.items.map(function(item) { if(_checkedItems.indexOf(item.id) > -1){ return item } }) } ,有时会出现损坏的代码。如下所示: enter image description here

4 个答案:

答案 0 :(得分:2)

Python 2.x使用ASCII作为默认编码,而Python 3.x使用UTF-8。只需使用:
 my_string.encode("utf-8")
将ascii转换为utf-8(或将其更改为您需要的任何其他编码)

您也可以尝试将此行放在代码的第一行:

# -*- coding: utf-8 -*-

答案 1 :(得分:2)

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'

字符串u中的前缀utf8_txt表示它是Unicode字符串。

你也可以这样做。

>>> print u"你好"
>>> 你好

您只需在u前添加字符串即表示它是Unicode字符串。

答案 2 :(得分:0)

在Windows上使用Python 2时:

  1. 对于要在IDLE中保存Unicode字符的文件,行

    u

    必须在其开头添加。

  2. 要在Windows中的控制台输出中正确显示Unicode字符,如果在IDLE控制台或Windows shell中运行脚本,保存在文件中,则必须添加字符串print u"你好" print u"Привет"

    var req = {
     headers: {
       'Content-Type':'application/json'
     }
    }
    $http.post(url,req)
                .then(
               function(response){
                    }, 
               function(response){
                    });

    但是在互动模式下,我发现没有必要使用西里尔文。

答案 3 :(得分:0)

即使在python 3.7中,我仍然遇到相同的问题,UTF-8仍然可以解决问题