我读了一个文本文件,其中包含一些'\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,通过解码,您可以确保处理的是文本值,而不是字节值,这可能因编解码器而异。