【问题标题】:Remove non utf-8 characters from string in Python 3.4从 Python 3.4 中的字符串中删除非 utf-8 字符
【发布时间】:2015-08-11 07:59:17
【问题描述】:

我正在尝试从 MySQL 检索一些数据,但在读取数据时遇到问题。列数据类型是带有 utf8_general-ci 的 varchar。我尝试解码它,但它不起作用。所以,我想删除那些非 utf8 字符,因为我不需要那些非 utf8 字符。

#This is the line causing the problem:
line: ((123, 'Classical Musicï¼\x8c', 69),)

conn = db.cursor()
conn.execute(sql) 
data = conn.fetchall()
for line in data:
    for x in line:
        print(x)

收到错误代码

UnicodeEncodeError: 'charmap' codec can't encode character '\x8c' in position 17

我尝试了 decode('utf-8') 但又遇到了一个错误。

conn = db.cursor()
conn.execute(sql) 
data = conn.fetchall()
for line in data:
    for x in line:
        print(x[1].decode('utf-8'))

AttributeError: 'str' object has no attribute 'decode'

【问题讨论】:

  • 我会管理我不知道python;但是一个用 utf8-collat​​ion 存储的字符串将在输入时返回;所以你应该在插入数据时解决你的编码问题,而不是在已经发生编码失败时删除字符。这三个字符是C3 AF C2,可能是C3 AF C2 BB C2 BF的前半部分,一个用utf8编码的utf-8 bom。

标签: python mysql utf-8


【解决方案1】:

Mojibake 和双重编码,加上 Python 的修饰。

重新开始。将所有内容都设为 utf8 -- 文本、连接、CHARACTER SET、html 标头。

如果还有问题,请回来;希望您的代码足够接近,可以纠正我们开出治疗方法。

同时,在这里阅读更多主题;更简单的混乱版本比比皆是。

C3AF C2BB C2BF 应该是一个花哨的逗号,对吗? utf8 十六进制应该是EFBC8C。那个逗号是由什么进程产生的?

【讨论】:

    猜你喜欢
    • 2018-01-05
    • 2018-01-23
    • 2014-12-19
    • 2019-01-13
    • 2012-08-22
    • 2013-12-22
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    相关资源
    最近更新 更多