必须检索存储在unicode(数据库中)中的数据并将其转换为其他形式。
以下代码段
def convert(content):
content = content.replace("ஜௌ", "n\[s");
return content;
mydatabase = "database.db"
connection = sqlite3.connect(mydatabase)
cursor = connection.cursor()
query = ''' select unicode_data from table1'''
cursor.execute(query)
for row in cursor.fetchone():
print convert(row)
在convert方法中产生以下错误消息。
exceptions.UnicodeDecodeError:'ascii'编解码器无法解码字节0xe0 位置0:序数不在范围内(128)
如果数据库内容为“ஜௌஜௌஜௌ”,则输出应为“n \ [sn \ [sn \ [s”
文档建议在创建unicode字符串时使用ignore或replace来避免错误。
当迭代改变如下时:
for row in cursor.fetchone():
print convert(unicode(row, errors='replace'))
它返回
exceptions.TypeError:不支持解码Unicode
通知该行已经是unicode。
对此有任何启发,以使其工作,非常感谢。提前谢谢。
答案 0 :(得分:2)
content = content.replace("ஜௌ", "n\[s");
建议你的意思是:
content = content.replace(u'ஜௌ', ur'n\[s');
或者对于文件编码不确定的安全性:
content = content.replace(u'\u0B9C\u0BCC', ur'n\[s');
您拥有的内容已经是Unicode,因此您应该对其进行Unicode字符串替换。没有"ஜௌ"
的{{1}}是一个字节字符串,表示某些编码中依赖于源文件字符集的字符。 (字节字符串只能在最明确的情况下与Unicode字符串一起平滑地工作,这适用于ASCII字符。)
(u
- 字符串表示不必担心包含裸反斜杠。)