我读了一个文本文件,其中包含一些像'\260'
(这意味着'°'
)的字符,然后我将它添加到DB(sqlite3)。
之后,我尝试从DB获取信息,但是sql-query将使用'\xb0'
构建(它也意味着'°'
),因为我从XML文件中获取此信息。
我尝试用八进制字符替换十六进制字符:text = text.replace(r'\xb0', '\260')
但它不起作用,为什么?我无法构建正确的sql-query。
也许这个问题有一些解决方案,例如编码,解码等。
答案 0 :(得分:3)
\260
与\xb0
完全相同:
>>> '\xb0'
'\xb0'
>>> '\260'
'\xb0'
你可能希望解码你的unicode输入并插入它。如果您的数据编码为Latin 1,则解码:
>>> print '\xb0'.decode('latin1')
°
sqlite3
可以很好地处理unicode,通过解码确保你处理文本值,而不是字节值,这可能因编解码器而不同于编解码器。