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