解决python连接mysql,UTF-8乱码问题

标签: python编码乱码utf-8mysql
5189人阅读 评论(0) 收藏 举报
分类:

在测试“Bluemix云端数据库服务ClearDB MySQL使用示例———Python开发投票程序”的程序时,从MySQL中读取的中文输出到网页显示都是问号,如下图:


解决方法:

产生乱码问题,通常都是由于几方面的编码不统一导致的,请检查以下编码是否一致:

1、最好统一使用 utf-8 编码,对各种字符集支持的都很好!

2、网页的编码

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Bluemix云端数据库服务ClearDB MySQL使用示例———Python投票程序 - 无知人生,记录点滴</title>

3、MySQL 数据库使用的编码


排序规则保持默认值即可。

这是用的什么数据库管理工具?

MySQL 图形界面管理工具Navicat for MySQL

如果是现有的数据库,我们可以通过以下查询语句查看一下:

SHOW VARIABLES LIKE '%char%';

输出如下图:


最关键的是要看“character_set_server”是否为 utf-8 编码,通常是因为 character_set_server 的编码为 latin1 而产生乱码的原因。

解决方法,执行语句修改:

set character_set_server='utf8';
注意:这里是“utf8”,而不是“utf-8”,中间不需要有减号。


4、Python连接数据库使用的编码

conn=MySQLdb.connect(host='localhost',user='root',passwd='123456',db='test',port=3306)
cur=conn.cursor()
cur.execute('SET NAMES UTF8')

5、Python的默认编码

import sys		#提供了许多函数和变量来处理 Python 运行时环境的不同部分.

reload(sys)  
sys.setdefaultencoding('utf8')

结束语

将编码都统一之后,乱码的问题应该就解决了,现在很多语言默认编码都是 utf-8 了,

我遇到最多的就是数据库 character_set_server 的编码和连接数据库时使用的编码不一致导致的问题。

如果你还没有解决,请把你遇到的情况告诉我。

5
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    联系我

    QQ群:IT十年(170273637)

    加群暗号:微wx笑

    个人资料
    • 访问:7923849次
    • 积分:60794
    • 等级:
    • 排名:第40名
    • 原创:788篇
    • 转载:217篇
    • 译文:43篇
    • 评论:1720条
    博客专栏
    文章分类
    最新评论
    友情链接