我使用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取代,從來沒有被實際的口音取代。傳遞一個字符集參數給了我'不能初始化字符集'。 –