拉丁字母重音:DjangoUnicodeDecodeError

1 投票
1 回答
3351 浏览
提问于 2025-04-15 13:58

我在读取一个txt文件并想把内容插入到mysql数据库表时遇到了问题,以下是代码的一部分:

文件的第一行内容是:"aclaración"

archivo = open('file.txt',"r")
for line in archivo.readlines():
....body = body + line
model = MyModel(body=body)
model.save()

我遇到了一个DjangoUnicodeDecodeError错误:

'utf8'编解码器无法解码位置8的字节:无效数据。你传入的是'aclaraci\xf3n'(类型为'str')
Unicode错误提示

无法编码/解码的字符串是:araci�n。

我尝试了body.decode('utf-8')、body.decode('latin-1')、body.decode('iso-8859-1'),但都没有解决问题。

你能帮我吗?任何提示都很感激 :)

1 个回答

5

从字符 \xf3 对应的 'ó' 来看,数据的编码方式很可能是 ISO-8859-1(或者类似的编码)。所以,使用 body.decode('iso-8859-1') 应该能得到一个有效的 Unicode 字符串(你没有说明“没有解决方案”是什么意思——你遇到了什么错误信息,在哪里出现的?);如果你需要的是一个 utf-8 编码的字节串,那么可以用 body.decode('iso-8859-1').encode('utf-8') 来得到!

撰写回答