我正在为一个包含瑞典字符的数据库编写测试.在测试中,我直接使用带有变音符号和其他此类瑞典语连字的字符,它运行得很好,从数据库中读取文件名并成功进行字符串比较.
但是,在导入此文件以执行pydoc生成时,我得到了一个非常熟悉的异常:
SyntaxError:第1行文件foo.py中的非ASCII字符'\ xc3',但未声明编码; 有关详细信息,请参阅http://www.python.org/peps/pep-0263.html
在我自己做一些调查后,我发现添加了
# -*- coding: iso-8859-15 -*-
Run Code Online (Sandbox Code Playgroud)
在我的文件的顶部修复了导入问题.但是,现在测试失败了所有的字符串比较.我尝试了另一种方法来放弃编码声明并将字符串写为
u"Bokmärken"
Run Code Online (Sandbox Code Playgroud)
......但这仍然无法使测试失败.
有谁知道解决这个问题的好方法?
she*_*mer 10
您需要在编辑器和数据库中设置编码,以便它们匹配.如果您的数据库是utf-8编码的,而不是iso-8859-15,那么将编辑器设置为utf-8应该修复它.但是,由于你的字符串'比较失败,情况可能并非如此.
更换
# -*- coding: iso-8859-15 -*-
Run Code Online (Sandbox Code Playgroud)
同
# -*- coding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)
或(相当于)
# coding=utf-8
Run Code Online (Sandbox Code Playgroud)
尝试utf-8编码.
使用repr('swedish string'和打印调试输出repr(u'swedish string')也将有助于检查差异.在你的口译员之后.你能告诉我们你的数据库设置的编码是什么吗?另外,是由python编写的数据库数据还是直接插入?您可能会以错误的编码将数据写入数据库开始,这现在会导致比较问题.