我在 MSSQL 中有一个数据库,我正在将其移植到 SQLite/Django。我正在使用 pymssql 连接到数据库并将文本字段保存到本地 SQLite 数据库。
但是对于某些角色,它会爆炸。我收到这样的投诉:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x97 in position 1916: ordinal not in range(128)
有什么方法可以将字符转换为正确的 unicode 版本?还是剥离它们?
最佳答案
一旦你有了字节串 s
,不要直接将它用作 unicode obj,而是使用正确的编解码器显式转换它,例如:
u = s.decode('latin-1')
并在这一点之后的代码中使用 u
而不是 s
(大概是写入 sqlite 的部分)。这是假设 latin-1
是最初用来制作字节串的编码——我们不可能猜到,所以试着找出答案;-)。
作为一般规则,我建议:不要在您的应用程序中将任何文本作为编码字节字符串进行处理——在输入后立即将它们解码为 unicode 对象,并且如有必要,在输出前将它们编码回字节字符串。
关于python - 转换或去除 "illegal"Unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2508847/