如何在我的.py文件中成功使用UNICODE字符而不会造成麻烦?

时间:2011-07-12 17:13:47

标签: python unicode

我正在为一个包含瑞典字符的数据库编写测试。在测试中,我直接使用带有变音符号和其他此类瑞典语连字的字符,它运行得很好,从数据库中读取文件名并成功进行字符串比较。

但是,在导入此文件进行pydoc生成时,我得到了一个非常熟悉的异常:

  

SyntaxError:第1行文件foo.py中的非ASCII字符'\ xc3',但未声明编码;有关详细信息,请参阅http://www.python.org/peps/pep-0263.html

在我自己做一些调查后,我发现添加了

# -*- coding: iso-8859-15 -*-

到我的文件顶部修复了导入问题。但是,现在测试失败了所有的字符串比较。我尝试了放弃编码声明和将字符串写为

的替代方法
u"Bokmärken"

...但这仍然不能使测试失败。

有没有人知道解决这个问题的好方法?

1 个答案:

答案 0 :(得分:10)

您需要在编辑器和数据库中设置编码,以便它们匹配。如果您的数据库是utf-8编码的,而不是iso-8859-15,那么将编辑器设置为utf-8应该修复它。但是,由于你的字符串'比较失败,情况可能并非如此。

替换

# -*- coding: iso-8859-15 -*-

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

或(等效)

# coding=utf-8

尝试utf-8编码。

使用repr('swedish string'repr(u'swedish string')打印调试输出对于检查差异也很有用。 在你的口译员之后。你能告诉我们你的数据库设置的编码是什么吗?另外,是由python编写的数据库数据还是直接插入?您可能会以错误的编码将数据写入数据库,这会导致比较出现问题。