我使用Python的库MySQLdb
来访问一个带有葡萄牙语条目的数据库,并使用一系列重音符号,然后使用xlsxwriter
将其保存到Excel文件中。关闭工作簿以保存时,出现以下错误:
UnicodeDecodeError: 'utf8' codec can't decode byte 0xed in position 59: invalid continuation byte
它抱怨的结果是:
^{pr2}$具体来说,它应该是Brasília
,而不是{\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> ALTER TABLE <table> CONVERT <col> VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci;
(2,3)或
mysql> ALTER TABLE <table> MODIFY <col> VARCHAR(50) CHARACTER SET utf8;
(2,3)我想要第一个。在
最后,正如Klaus D.所说,您需要使用
charset="utf8"
连接到mysql,请检查link这听起来像是
xlswriter
的问题,而不是python或MySQL。在0xED表示传入的字节是拉丁1,不是utf8,不是ascii。如果您一直使用0xED,那么请执行
SET NAMES latin1
,这样python就可以与MySQL正确通信了。如果cd6{cd6}在转换过程中{cd6}不适合,那么{/cd6}都不会发生相关问题 更多 >
编程相关推荐