【发布时间】: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-collation 存储的字符串将在输入时返回;所以你应该在插入数据时解决你的编码问题,而不是在已经发生编码失败时删除字符。这三个字符是
C3 AF C2,可能是C3 AF C2 BB C2 BF的前半部分,一个用utf8编码的utf-8 bom。