在Python 3.4中从字符串中删除非utf-8字符

时间:2015-08-11 07:59:17

标签: python mysql utf-8

我正在尝试从MySQL检索一些数据,但我在读取数据时遇到了问题。列数据类型为varchar,带有utf8_general-ci。我尝试解码但它不起作用。所以,我想删除那些非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

我尝试过解码('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'

1 个答案:

答案 0 :(得分:0)

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

重新开始。 make everything utf8 - text,connections,CHARACTER SET,html header。

如果你还有问题,请回来;希望你的代码足够接近,以便我们开出治疗方案。

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

C3AF C2BB C2BF被认为是一个花哨的逗号,对吗? utf8十六进制应该是EFBC8C。用逗号生成什么进程?