[问题] 字串转码问题

楼主: 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)
请问有其他方法吗?
感谢各位
作者: TitanEric (泰坦)   2019-07-24 22:06:00
推楼上
作者: kenduest (小州)   2019-07-24 11:37:00
要先看DB table 编码用什么,并且确认连线时候用哪种编码,最后才是搞考虑目前操作端要显示若编码不同的处理
楼主: tg70197 (alex)   2019-07-24 11:41:00
os.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
作者: kenduest (小州)   2019-07-28 22:47:00
大概就是像是以往有人在mysql用latin1字集放big5编码
作者: alvinlin (林矜业)   2019-07-30 11:15:00
读出文字档后存成.html再试着用浏览器换不同码解码试试?

Links booklink

Contact Us: admin [ a t ] ucptt.com