我正在为一个包含瑞典字符的数据库编写测试。在测试中,我直接使用带有变音符号和其他此类瑞典语连字的字符,它运行得很好,从数据库中读取文件名并成功进行字符串比较。
但是,在导入此文件进行pydoc生成时,我得到了一个非常熟悉的异常:
SyntaxError:第1行文件foo.py中的非ASCII字符'\ xc3',但未声明编码;有关详细信息,请参阅http://www.python.org/peps/pep-0263.html
在我自己做一些调查后,我发现添加了
# -*- coding: iso-8859-15 -*-
到我的文件顶部修复了导入问题。但是,现在测试失败了所有的字符串比较。我尝试了放弃编码声明和将字符串写为
的替代方法u"Bokmärken"
...但这仍然不能使测试失败。
有没有人知道解决这个问题的好方法?
答案 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编写的数据库数据还是直接插入?您可能会以错误的编码将数据写入数据库,这会导致比较出现问题。