【问题标题】:Character encoding - copy/paste from web字符编码 - 从网络复制/粘贴
【发布时间】:2013-04-18 15:36:44
【问题描述】:

这更像是一个关于字符编码的教育问题(这里是爱好者编码器) - 但我遇到了这个具体问题:

1) 我在 python 3 中编写了一个愚蠢的程序,在编辑器中我总是使用 UTF-8(这里是德语键盘)。

2) 与感兴趣的家庭成员分享我的“创作”...我将代码粘贴到私人 Pastebin.com 中(说明:将(原始)文件复制/粘贴到文本文件中并将文件扩展名更改为 . py)

麻烦从这里开始:

3) 遵循这些说明将不允许运行程序。

4) 我不确定为什么它不起作用,但由于字符编码现在是 ANSI,我知道这是问题所在。在代码编辑器中将编码改回 UTF-8 即可解决问题。

问题是:

a) 为什么要改为ANSI?

b) 为什么它在 ANSI 中无论如何都不起作用(因为仅凭肉眼看,整个代码看起来都一样)

c) 如何保存 UTF-8 编码?我的意思是:我的家人不知道如何更改编码......(我知道......只需将可执行文件发送给他们。但正如我所说......教育)

编辑:澄清 python-3.x 版本

【问题讨论】:

    标签: utf-8 python-3.x ansi


    【解决方案1】:

    当他们将文本复制粘贴到编辑器并按保存时,这就是麻烦的开始。保存时,您必须指定编码,或者受制于“ANSI”之类的默认值。如果不使用某种编码,则无法保存文本文件。

    它可能不起作用,因为您在文件中声明了# -*- coding: utf-8 -*-,将文件保存在“ANSI”中的文本编辑器对此一无所知,当然可以保持原样。因此解析器会尝试以 UTF-8 格式读取文件并失败,因为它不是 UTF-8。

    您可以只对源代码中的非 ASCII 字符使用 \uxxxx 转义。

    所以而不是:

    str = u"€"
    

    str = u"\u20AC"
    

    【讨论】:

    • 奇怪:不,我没有声明 # -*- coding: utf-8 -*- ,但现在我当然尝试了,与你的假设相反......现在它可以工作了。所以谢谢!但我会在未来的项目中考虑非 ASCII 字符转义的建议 - 对我来说似乎是一种非常强大的方式。
    • @Chrugel 这很奇怪。你不使用u-strings 吗?您使用的是 python 2 对吗?
    • 呃 - 现在我真的为自己的无知感到尴尬:不,在这种情况下它只是 "...",我没有意识到我应该使用 u-strings。它是python 3(关于字符串有区别吗?)。无论如何:我的小问题已经解决,如有任何困惑,我深表歉意。
    • @Chrugel 啊,我在我的帖子中假设了 python 2。在 python 3 中,coding 是不必要的,因为即使没有它,它也默认为 UTF-8。 u 字符串在 python 3 中也是不必要的,因为 python3 中的普通字符串就像你在 python 2 中的字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多