解决Python操作MySQL中文乱码的问题

原始代码:

import os, sys, string
import MySQLdb

MYSQL_HOST = ‘localhost‘
MYSQL_PORT = ‘3306‘
MYSQL_USER = ‘root‘
MYSQL_PASS = ‘‘
MYSQL_DB = ‘app_hwms‘

def main():
    try:
        conn = MySQLdb.connect(host=MYSQL_HOST,user=MYSQL_USER ,passwd=MYSQL_PASS,db=MYSQL_DB)
    except Exception, e:
        print e
        sys.exit()

    c = conn.cursor()
    text = u‘中文‘
    print text
    c.execute("insert into test (test) values( ‘%s‘ )" % (text))
    c.execute(‘select * from test‘)
    msgs = list(c.fetchall())

    print msgs

if __name__ == ‘__main__‘:
    main()

出现以下报错:

而直接操作mysql:

是有中文的。

解决办法:

1 Python文件设置编码 utf-8 (文件前面加上 #encoding=utf-8)
2 Python连接MySQL是加上参数 charset=utf8

3 设置Python的默认编码为 utf-8 (sys.setdefaultencoding(utf-8)

修改后代码:

#encoding=utf-8

import os, sys, string
import MySQLdb

MYSQL_HOST = ‘localhost‘
MYSQL_PORT = ‘3306‘
MYSQL_USER = ‘root‘
MYSQL_PASS = ‘‘
MYSQL_DB = ‘app_hwms‘

reload(sys)
sys.setdefaultencoding(‘utf-8‘)

def main():
    try:
        conn = MySQLdb.connect(host=MYSQL_HOST,user=MYSQL_USER ,passwd=MYSQL_PASS,db=MYSQL_DB,charset=‘utf8‘)
    except Exception, e:
        print e
        sys.exit()

    c = conn.cursor()
    text = u‘中文‘
    print text
    c.execute("insert into test (test) values( ‘%s‘ )" % (text))
    c.execute(‘select * from test‘)
    msgs = list(c.fetchall())

    print msgs

if __name__ == ‘__main__‘:
    main()

重新执行的结果:

而用flask,在html中原本显示??的中文字符也可以正确的显示了。

时间: 2024-10-06 05:36:25

解决Python操作MySQL中文乱码的问题的相关文章

sae python中Mysql中文乱码的解决

一开始我用的是: db=MySQLdb.connect(db=sae.const.MYSQL_DB,user=sae.const.MYSQL_USER,passwd=sae.const.MYSQL_PASS,host=sae.const.MYSQL_HOST,port=int(sae.const.MYSQL_PORT)) 数据库编码与python代码的编码都已设为utf8,在PHPMyAdmin中添加中文记录,在网页查询显示中却显示乱码,我在网上各种搜索都找不到解决方法.最后终于发现在连接数据库

解决springmvc+mybatis+mysql中文乱码问题【转】

这篇文章主要介绍了解决java中springmvc+mybatis+mysql中文乱码问题的相关资料,需要的朋友可以参考下 近日使用ajax请求springmvc后台查询mysql数据库,页面显示中文出现乱码 最初在mybatis配置如下 <select id="queryContentById" resultType = "java.lang.String" parameterType="String" >     select t

python查询mysql中文乱码问题

python2.7 查询或者插入中文数据在mysql中的时候出现中文乱码 --- 可能情况: 1.mysql数据库各项没有设置编码,默认为'latin' 2.使用MySQL.connect的时候没有设置默认编码 3.没有设置python的编码,python2.7默认为'ascii' 4.没有解码 --- 解决方法: 1.设置mysql的编码 ubuntu执行下列语句:** sudo vim /etc/mysql/my.cnf **然后在里面插入语句: [client]default-charac

jsp和servlet操作mysql中文乱码问题的解决办法

转载:http://www.jb51.net/article/49253.htm 首先看是从什么地方开始出现的乱码,只要统一编码,就不会出现乱码,下面以uft-8(个人认为最好)为例,详细说明: 1.如果乱码是从jsp页面出现的,jsp头部页面加上:<%@ page language="java" pageEncoding="UTF-8" %>在head标签中加上标签. 2.如果乱码是在servlet中出现的,则有两种方法:一种是在每个servlet中d

ef 操作 mysql 中文乱码问题

1.保证mysql数据的编码为utf8 启动mysql mysql -hlocalhost -uroot -p 输入密码 show VARIABLES like 'character_%'; SET character_set_client='utf8'; SET character_set_connection='utf8'; SET character_set_results='utf8'; 2.已经生成数据库的,注意数据库的collation,表的collation,以及表中字符串列的co

Linux中mysql中文乱码

问题描述:当我们在linux系统上装载mysql后操作数据库的时候,会出现中文乱码问题,比如做插入操作,发现添加到数据库的数据中文出现论码,下面就将解决linux下mysql中文乱码问题!: 环境centos6.5 1.打开Linux窗口,启动mysql: mysql -uroot -proot 2.连接mysql后输入: show variables like '%char%'; 3.配置/etc/my.cnf如下(如果/etc/my.cnf不存在,可以新建/etc/my.cnf文件): [c

Python操作MySQL以及中文乱码的问题

Python操作MySQL需要安装Python-MySQL可以从网上搜索一下,和一般的Python包一样安装 安装好之后,模块名字叫做MySQLdb ,在Window和Linux环境下都可以使用,试验了一下挺好用,不过又发现了烦人的乱麻问题,最后用了几个办法,解决了! 我用了下面几个措施,保证MySQL的输出没有乱麻:    1 Python文件设置编码 utf-8 (文件前面加上 #encoding=utf-8)    2 MySQL数据库charset=utf-8     3 Python连

mysql中文乱码问题,phpmyadmin操作解决方法

mysql中文乱码问题一直每次迁移一次数据库就要从头解决一遍,因为数据库建好以后就不会怎么动了,一直没当回事儿,反正就麻烦一次吗.最近服务器遇到了点问题,重装了几次,结果每次都要重新配置这个问题,索性就总结一下. 首先中文乱码的根本问题就是编码问题:我们把中文输入到数据库中再从数据库中取出来显式在浏览器上分为几个过程,这些过程中要求每一个处理过程的编码都是要支持中文的,而且如果前后两个过程如果编码方式不一样的话,必须要有转码的手段.比如说你用gbk的编码方式在本地写好了一段中文,或者说是.sql

总结--解决 mysql 中文乱码

首先分析一下导致mysql 中文乱码的原因: 1.建表时使用了latin 编码 2.连接数据库的编码没有指定 3.写入时就已经乱码(这种情况需要自己检查源数据了) 解决方法总结: 1.创建库时指定编码: create database testdb default charset utf8 2.修改库的编码: ALTER DATABASE `testtable` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 3.修改表的编码: ALTER TABLE `