如何在.py文件中成功使用UNICODE字符而不出错?

4 投票
1 回答
3802 浏览
提问于 2025-04-16 21:21

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

但是,当我将这个文件导入以生成文档时,我遇到了一个非常熟悉的错误:

语法错误:文件 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写入的,还是直接插入的?你可能一开始就用错误的编码写入了数据库的数据,这现在导致了比较时出现问题。

撰写回答