python连接数据库中文乱码问题分析
2016-11-11 15:45
295 查看
python 用pymssql连接MS SQL Server数据库或用MySQLdb连接mysql数据库时,经常会遇到中文乱码问题。
为了提高解决问题效率,分析取到的数据的编码格式很重要。
推荐使用 chardet 做编码分析。
CMD 下用pip安装:pip install chardet;
一个小栗子:
结果:
{'confidence': 0.99, 'encoding': 'GB2312'}
另一个栗子:
用python从SQL Server中取到数据为unicode,但是直接print是乱码。数据库的存放是Latin1 所以先encode,经用chardet分析里面的实际编码是GB2312,所以再decode。保存的就不是乱码了。
补充:2016/11/14
上面的转换有点多余,而且有的时候会报异常,可以直接这样:
参考:
[1] pymssql中文显示乱码
为了提高解决问题效率,分析取到的数据的编码格式很重要。
推荐使用 chardet 做编码分析。
CMD 下用pip安装:pip install chardet;
一个小栗子:
>>>import chardet >>>a = '\xc4\xcf\xbc\xab\xb5\xe7\xc9\xcc' >>>chardet.detect(a)
结果:
{'confidence': 0.99, 'encoding': 'GB2312'}
另一个栗子:
>>>a = u'\xc4\xcf\xbc\xab\xb5\xe7\xc9\xcc' >>>print a Äϼ«µçÉÌ >>>b = a.encode('latin1').decode('GB2312') >>>b u'\u5357\u6781\u7535\u5546' >>>chardet.detect('\u5357\u6781\u7535\u5546') {'confidence': 1.0, 'encoding': 'ascii'} >>> print b 南极电商
用python从SQL Server中取到数据为unicode,但是直接print是乱码。数据库的存放是Latin1 所以先encode,经用chardet分析里面的实际编码是GB2312,所以再decode。保存的就不是乱码了。
补充:2016/11/14
上面的转换有点多余,而且有的时候会报异常,可以直接这样:
>>> b= a.encode('raw_unicode_escape') #直接搞定 >>>b '\xc4\xcf\xbc\xab\xb5\xe7\xc9\xcc' >>>print b 南极电商 >>> import chardet >>> chardet.detect(b) {'confidence': 0.99, 'encoding': 'GB2312'}
参考:
[1] pymssql中文显示乱码
相关文章推荐
- JSP页面与数据库连接中出现的中文乱码问题分析与解决
- 中文乱码--MySQL5.0中文问题及JDBC数据库连接和JSP汉字编码问题解决方法总
- 连接mysql server 5.0 数据库的乱码问题,utf8编码,中文正确显示
- python django MySQLdb 连接 mysql 5.5 中文乱码问题的解决
- python 中文乱码问题深入分析
- python中文乱码问题深入分析
- python 中文乱码问题深入分析
- PHP数据库连接中文乱码问题总结
- python 中文乱码 问题深入分析
- JSP中乱码问题解决(一、JSP页面显示乱码,二、表单提交中文时出现乱码,三、数据库连接出现乱码,四、数据库的显示乱码 )
- Python连接Mysql&&解决数据库汉字显示乱码问题
- C#访问数据库时中文乱码问题分析及解决
- python 中文乱码 问题深入分析
- python 中文乱码问题深入分析
- python 中文乱码问题深入分析
- 关于C++用ODBC连接数据库中文显示乱码的问题
- 关于jsp连接sql server2005 写入数据库中文乱码的问题
- python 中文乱码问题深入分析
- python 中文乱码问题深入分析
- Python连接MySQL中有关中文乱码的解决问题