编码(unicode)十六进制到八进制

时间:2013-11-09 17:15:57

标签: python sql unicode

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

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

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

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

1 个答案:

答案 0 :(得分:3)

\260 \xb0完全相同

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

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

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

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