我读了一个文本文件,其中包含一些'\260'这样的字符(它表示'°'),然后将其添加到DB(sqlite3)中。

之后,我尝试从数据库中获取信息,但是sql-query将使用'\xb0'构建(也意味着'°'),因为我从XML文件中获取了此信息。

我尝试用八进制字符替换十六进制字符:text = text.replace(r'\xb0', '\260')但这不起作用,为什么?我无法建立正确的sql查询。

也许对于这个问题有一些解决方案,例如编码,解码等

最佳答案

\260\xb0相同:

>>> '\xb0'
'\xb0'
>>> '\260'
'\xb0'


您可能希望将输入解码为unicode并插入。如果您的数据编码为Latin 1,则解码:

>>> print '\xb0'.decode('latin1')
°


sqlite3可以很好地处理unicode,通过解码,您可以确保处理的是文本值,而不是字节值,这可能因编解码器而异。

10-05 19:53