作者:
tg70197 (alex)
2019-07-24 11:07:59各位大大好
小弟在字碼轉換時遇到問題找不到解決方向
想請各位大大指點
有一些資料從資料庫撈出來後是ASCII碼
但顯示是亂碼
小弟需要將它轉換成正常可讀的字碼
煩請各位大大協助
程式如下:
cur.execute(sql)
rows = cur.fetchall()
for row in rows:
print(row[0])
con.close()
顯示為:
https://imgur.com/BoXNvK0
資料庫原是內容為:
https://imgur.com/v754Wvu
有嘗試轉碼
for row in rows:
print(bytes(row[0], encoding='ASCII').decode('UTF8'))
con.close()
但出現
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-29:
ordinal not in range(128)
查了一些資料設定字元為UTF8 我本來就都是UFT8
print(sys.getdefaultencoding())
print(sys.stdin.encoding)
print(sys.stdout.encoding)
print(sys.stderr.encoding)
請問有其他方法嗎?
感謝各位
要先看DB table 編碼用什麼,並且確認連線時候用哪種編碼,最後才是搞考慮目前操作端要顯示若編碼不同的處理
作者:
tg70197 (alex)
2019-07-24 11:41:00os.environ['NLS_LANG'] = 'AMERICAN_AMERICA.WE8ISO8859已經知道編碼是什麼了,原本DB內就是存ASCII碼所以才需要把ASCII轉成可以顯示的資料
作者:
AndCycle (AndCycle)
2019-07-24 16:00:00你如果要顯示在命令列你就要搞懂console編碼的問題如果你想快速解就先寫在檔案裡然後開筆記本去看
作者:
wintersxp (wintersxp)
2019-07-26 17:33:00樓上給的建議都不錯,但我認為你DB資料根本不是ascii
大概就是像是以往有人在mysql用latin1字集放big5編碼
讀出文字檔後存成.html再試著用瀏覽器換不同碼解碼試試?