Ubuntu 16.04 Python读取MySQL数据库中文乱码的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/DreamHome_S/article/details/78312877

Contented with little, yet wishing for more.

为收获一点点感到满足,但是希望可以获得更过。

Ubuntu 16.04 Python读取MySQL数据库中文乱码的问题

MySQL数据库安装好之后,发现不能向数据库中插入中文,作为一个伟大的天朝人简直不能忍啊。后来网上百度看到修改配置的解决方案,发现乱七八糟一大堆,很多不能解决问题。

尝试了各种方法,将最简单的解决方案写了下来:

中文乱码的主要原因是数据库编码的问题,因此只需改变数据库的编码。

编辑MySQL配置文件:

$sudo vim /etc/mysql/conf.d/mysql.cnf

添加如下代码:

[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8

网上一堆配置发现有用的只是这两句。。。。。。

改变配置后重启MySQL服务。(简单粗暴的可以直接重启电脑)

停止mysql:

方式一:sudo /etc/init.d/mysql stop 

方式二:sudo stop mysql 

方式三:sudo service mysql stop (亲测可行)

重启mysql:

方式一:sudo/etc/init.d/mysql restart

方式二:sudo restart mysql

方式三:sudo service mysql restart

查看修改后的数据库编码命令:

show variables like 'char%' 

修改后的MySQL数据库编码如下:
这里写图片描述

修改好数据库编码之后,以前的数据库要重新建,发现事情还没有解决。。。。。难受

从数据库中读取中文数据乱码

本人开发环境: Ubuntu16.04+eclipse + Python+MySQL

首先使用以下代码连接数据库,一点毛病没有,字符编码也设置好了。

conn=MySQLdb.connect(host='localhost',user='root',passwd='home',db='Student',port=3306,charset='utf8')

数据库中的内容是:

(17,'沈梦家',‘男’)

然而读出来的结果是:

((17L, u'\u6c88\u68a6\u5bb6', u'\u7537'),)

内心很崩溃。。。。。。。。。。还是要坚持解决问题。网上搜了一堆可能的原因如下:

  • mysql数据库各项没有设置编码,默认为’latin’
  • 使用MySQL.connect的时候没有设置默认编码
  • 没有设置python的编码,python2.7默认为’ascii’
  • 没有解码decode(’uft-8’)
  • varchar和nvarchar的区别
  • …….

一个一个试发现都不能解决问题,算了还是喝口水冷静一下,伤不起。。。

最后,摸索一番问题解决了。。。。。。我都不敢相信。。。

输出数据是一个tuple时,中文的那部分显示的Ascll码,但是当我取出元组中的每一个属性时,发现可以正常输出中文。。。。。。我想我该问问佛祖是为什么了。。。,,,

希望我的解决方案可以帮我和我遇到一样问题的同学!!!

猜你喜欢

转载自blog.csdn.net/DreamHome_S/article/details/78312877