如何在.py文件中成功使用UNICODE字符而不出错?
我正在为一个包含瑞典字符的数据库写测试。在测试中,我直接使用带有变音符号的字符和其他瑞典字母,结果运行得很好,可以从数据库中读取文件名,并成功进行字符串比较。
但是,当我将这个文件导入以生成文档时,我遇到了一个非常熟悉的错误:
语法错误:文件 foo.py 第1行有非ASCII字符 '\xc3',但没有声明编码;详细信息请见 http://www.python.org/peps/pep-0263.html
经过一些调查,我发现将
# -*- coding: iso-8859-15 -*-
添加到文件顶部可以解决导入的问题。然而,现在测试中的所有字符串比较都失败了。我尝试了另一种方法,不声明编码,而是将字符串写成
u"Bokmärken"
……但这仍然无法让测试通过。
有没有人知道一个好的解决办法?
1 个回答
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写入的,还是直接插入的?你可能一开始就用错误的编码写入了数据库的数据,这现在导致了比较时出现问题。