我正在使用Python從MSSQL數據庫中使用ODBC連接提取數據。然後,我嘗試使用xlwt將提取的數據放入Excel文件中。使用xlwt在Excel中打印來自SQL的Unicode字符
然而,這產生了以下錯誤:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd8 in position 20: ordinal not in range(128)
我已經運行腳本只打印數據,並建立了數據庫中的違規性質是通過它與斜線的O。在python打印它顯示爲「\ xd8」。
將xlwt的工作表編碼設置爲UTF-8。
有沒有辦法讓這個直接進入Excel?
編輯
完整的錯誤如下消息:
C:\>python dbtest1.py
Traceback (most recent call last):
File "dbtest1.py", line 24, in <module>
ws.write(i,j,item)
File "build\bdist.win32\egg\xlwt\Worksheet.py", line 1032, in write
File "build\bdist.win32\egg\xlwt\Row.py", line 240, in write
File "build\bdist.win32\egg\xlwt\Workbook.py", line 309, in add_str
File "build\bdist.win32\egg\xlwt\BIFFRecords.py", line 25, in add_str
File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xd8 in position 20: invalid
continuation byte
您稱之爲工作表編碼的是xlwt用來對傳入的str對象進行DE編碼的編碼。缺省值是'ascii'。你的錯誤信息與「被設置爲UTF-8」不一致。請編輯您的問題以顯示與錯誤消息關聯的回溯。 – 2012-07-22 22:54:11
所以錯誤信息改變了。也許你錯了最初使用的編碼。無論如何:你沒有latin1。根據您的語言環境,使用cp1252或類似軟件。甚至更好:說服pyODBC提供所有文本輸出爲Python'unicode'對象。 – 2012-07-24 12:23:26
是的 - 最上面的一個是空白的(所以默認ascii),第二個是使用UTF-8,我肯定有點糊塗。感謝您的幫助 - 我會看看pyODBC /一種不同的方法。 – RowerAl 2012-07-24 12:41:14