python 从数据库中取出中文汉字,乱码问题

'gbk' codec can't encode character '\xc5' in position 45: illegal multibyte sequence

GBK编码,读取数据库中文乱码,把取出的字符串重新编码如下

s.encode('latin1').decode('gb2312')

修改好了;

记录搜到的帖子:

python读取数据库中文乱码问题

今天朋友遇到过怪问题,在同一个页面显示的2条中文记录一个正常,一个乱码,2条记录分别从不同的表里取出。录入的时候采用直接录入。仔细观察2者区别,发现能正常显示的字段在表中类型为nvarchar,不能的是varchar,试着将其改成nvarchar,问题解决。 因为对sqlserver不熟悉。通过查询手册得知: nvarchar表示以Unicode格式存储可变长度的 数据,所以能显示中文,而varchar是用非unicode存储数据,所以乱码。
将Varchar类型设置为nvarchar类型,发现问题可以解决。(修改成latin1编码就可以了)

GBK编码,读取数据库中文乱码,把取出的字符串重新编码如下

s.encode('latin1').decode('gb2312')

网址:

https://www.cnblogs.com/mojiemeizi/p/7600927.html

增加一种处理方式:

nvarchar类型对中文字段可以正常解码显示,但是varchar类型中文读取异常。所以字段设计最好用nvarchar类型存储中文,对于已经存在的问题,可以有两种解决方式:

1.修改表中字段对类型,将varchar改为nvarchar

2.采用手动编码解码方式可以解决乱码问题,data.encode('latin-1').decode('gbk')
————————————————
版权声明:本文为CSDN博主「求求你别说了」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zongzhengyingzhe/article/details/80859875

你可能感兴趣的:(python,python,pycharm)