问题 多语言.py文​​件的编码


我正在编写一个.py文件,其中包含来自多个字符集的字符串,包括英语,西班牙语和俄语。例如,我有类似的东西:

string_en = "The quick brown fox jumped over the lazy dog."  
string_es = "El veloz murciélago hindú comía feliz cardillo y kiwi."
string_ru = "В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!"

我无法弄清楚如何编码我的文件,以避免在我的文件运行时生成如下所示的语法错误:

SyntaxError: Non-ASCII character '\xc3' in file example.py on line 128, but no encoding
declared; see http://www.python.org/peps/pep-0263.html for details

我试过添加 # -*- coding: utf-8 -*- 到我的文件的开头,但没有任何运气。我也尝试将我的字符串标记为unicode(即 string_en = u'The quick brown fox jumped over the lazy dog."),再次失败。

是否可以在一个文件中包含来自不同Python编解码器的字符,或者我是否尝试执行不允许的操作?


3972
2018-02-14 17:00


起源

“多重编码”只是一个疯狂的疯狂想法。如果你的意思是使用unicode,那么应该没问题。只要确保它是一个unicode文件。添加编码声明并使用unicode字符串时会出现什么错误?
这个特殊的错误 似乎 表示您的文件是UTF-8编码的,如果存在 \xc3 字节。我只是尝试并得到了同样的错误。添加 # coding: utf-8  在第二行 我的脚本修复了它。 - Eric Redon
谢谢大家的建议。不知道昨天我做错了什么,但包括其中之一 # coding: utf-8 要么 # -*- coding: utf-8 -*- 今天我的工作正常。仅供参考,我使用的是GNU Emacs 22.1。我的默认编码系统是mule-utf-8 [使用缓冲区命令找到 C-h C coding]。 - Katrina


答案:


在您的用例中正确编码字符串有两个方面:

  1. 要让Python了解您使用的是UTF-8编码,您必须在代码的第一行或第二行中包含一行看起来像 # coding=utf-8。看到 PEP 0263 详情。

  2. 您的编辑器也必须使用UTF-8。这需要对其进行配置,具体取决于您使用的编辑器。 Emacs和Vim的配置在同一个PEP中解决,Eclipse可以默认为文件系统编码,它本身可以从您的语言环境设置派生,等等。


13
2018-02-14 17:25





你必须添加 # -*- coding: XXXX -*- 在文件的开头,替换 XXXX 同 编辑器使用的编码 保存源文件;

你在用哪个编辑器?您可以在编辑器设置中查看用于保存数据的编码吗?


1
2018-02-14 17:09