python - 转换或去除 "illegal"Unicode 字符

标签 python unicode pymssql

我在 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 是最初用来制作字节串的编码——我们不可能猜到,所以试着找出答案;-)。

作为一般规则,我建议:不要在您的应用程序中将任何文本作为编码字节字符串进行处理——在输入后立即将它们解码为 un​​icode 对象,并且如有必要,在输出前将它们编码回字节字符串。

关于python - 转换或去除 "illegal"Unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2508847/

相关文章:

SQL : SELECT w/MAX() and GROUP BY 的 Python 等效项

c++ - 如何对包含 Unicode 字符的 std::wstring 进行 HTML/URL 编码?

python - 无法连接到具有 unicode 名称的数据库

python - 无法通过 pymssql 连接到 SQL Server

python - 如何在gae上建立聊天室,是否有音频python框架来做到这一点?

java - Akamai 上的 RSS 源 : Any way to programmatically check various geo-locations?

Python - 将多个相同维度的二维数组合并为一个二维数组

java - 有没有办法输入一个unicode值并输出其各自的字符?

python - 我怎样才能在 python 中解码这个字符串?

python - 无法使用Python连接到MSSQL Server数据库