【问题标题】:Encoding for Multilingual .py Files多语言 .py 文件的编码
【发布时间】:2011-02-14 17:00:10
【问题描述】:

我正在编写一个 .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 编解码器的字符,或者我是否正在尝试做一些不允许的事情?

【问题讨论】:

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

标签: python unicode encoding nlp


【解决方案1】:

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

  1. 为了让 Python 了解您使用的是 UTF-8 编码,您必须在代码的第一行或第二行中包含类似于 # coding=utf-8 的行。详情请见PEP 0263

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

【讨论】:

    【解决方案2】:

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

    您使用的是哪个编辑器?你能检查一下编辑器设置是使用哪种编码来保存数据吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 2021-10-26
      相关资源
      最近更新 更多