Python中的Unicode编码错误:'latin-1

0 投票
1 回答
1548 浏览
提问于 2025-04-18 12:45

我正在尝试编写一个脚本,目的是获取XML数据,然后把这些数据发送到我的数据库,但我在编码或解码方面遇到了问题,我也不太清楚是哪里出了错。

我之前在网上查过资料,试过不同的方法,但这些都没有解决我的问题。所以我来这里寻求帮助,想找到一个解决方案。

这是我代码的一部分:

# -*- coding: utf8 -*-
...
REQ = u"INSERT INTO organismes (NAME_organisme,ID_organisme,ligne,cp,town,lat,lon,tel,fax,email,website) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);"
cursor = db.cursor(MySQLdb.cursors.DictCursor)
cursor.execute(REQ, (NAME,ID,LIGNE,CP,TOWN,LAT,LON,TEL,FAX,MAIL,URL))
cursor.close()

这是我遇到的错误:

UnicodeEncodeError: 'latin-1' codec can't encode character u'\u2019' in position 9: ordinal not in range(255)

我尝试了很多例子来把这段代码编码成UTF-8格式。我的Notepad++显示的是“UTF-8无BOM”。

谢谢你们的回复。

1 个回答

0

这不是源代码编码的问题,而是 MySQLdb 如何处理 unicode 值的问题。它的默认编码是 Latin-1,这种编码无法表示所有的 unicode 字符。你需要告诉 MySQLdb 使用不同的编码。对于 connect() 函数,有一个 charset 参数。我建议使用 'utf8' 编码。

撰写回答