我使用Python的库MySQLdb
来访问包含葡萄牙语条目的数据库,并带有一串重音符号,然后使用xlsxwriter
将其保存到Excel文件中。当我关闭工作簿保存它,我得到以下错误:python上的MySQLdb查询结果的编码问题
UnicodeDecodeError: 'utf8' codec can't decode byte 0xed in position 59: invalid continuation byte
它在抱怨的结果是:
u'QNO XX Conjunto YY, No. Casa ZZ, CEP: AAAAAAAA, Bras\xedlia /DF'
具体而言,它应该是Brasília
,而不是Bras\xedlia
。我怎样才能让输出以更友好的方式进行编码?我是否需要分别替换\xed
之类的每个可能的口音?
- 编辑:
我知道0xED是latin-1
(iso-8859-1
)í
,鉴于语言(和信息从负责该数据库的人),我认为这是正确的编码。如何将一个字符串变成'Bras\xedlia'
变成一个总体上变为'Brasília'
的字符串,知道这一点?
- 编辑:
如果我尝试使用str(that thing)
我所得到的是
'ascii' codec can't encode character u'\xed' in position 52: ordinal not in range(128)
您可以指示MySQL通过SET NAMES'UTF8''查询将结果转换为utf-8。 [更多信息](http://dev.mysql.com/doc/refman/5.7/en/charset-connection.html)。 – Kenney
您的文本不是UTF8编码,它看起来更像是一个iso-8859-x变体。您应该确定编码并将其作为'charset'参数传递给'connect()',或者在字符串上执行显式的decode()。 –
我已经尝试了几个字符串的显式解码,并且'\ xed'仍然存在,或者被某种其他类型的'\ x'-something取代,从来没有被实际的口音取代。传递一个字符集参数给了我'不能初始化字符集'。 –