1

我读了一个文本文件,其中有一些类似的字符'\260'(这意味着'°'),然后我将它添加到 DB(sqlite3)。

之后,我尝试从 DB 中获取信息,但是 sql-query 将被构建'\xb0'(这也意味着'°'),因为我从 XML 文件中获取了这些信息。

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

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

4

1 回答 1

3

\260 以下内容相同\xb0

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

您可能希望将输入解码为 un​​icode 并插入它。如果您的数据编码为拉丁语 1,则解码:

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

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

于 2013-11-09T17:19:40.787 回答