Python调用MySQLdb插入中文乱码的问题

本文介绍如何使用Python的MySQLdb模块正确地处理UTF-8编码的中文数据,包括设置数据库连接的字符集、调整系统默认编码等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. #!/usr/bin/python 
  2. # -*- coding: utf-8 -*- 
  3.  
  4. import MySQLdb 
  5.  
  6. def main(): 
  7.     fullname = "赵钱孙李" 
  8.  
  9.     conn = MySQLdb.connect(host='localhost', user='root',passwd='123', db='account', charset='utf8'# OK  
  10.     #conn = MySQLdb.connect(host='localhost', user='root',passwd='123', db='account')  # Error!!! 
  11.     cursor = conn.cursor() 
  12.     cursor.execute("insert into account (username,password) values ('%s','%s')" % (fullname,"111")) 
  13.     conn.commit() 
  14.     cursor.close() 
  15.     conn.close() 
  16.  
  17. if __name__ =="__main__"
  18.     main() 

如果从终端查询到数据库中的中文是乱码,那么在连接时给出charset参数即可(当然数据库和表必须全部都是utf-8的)。
否则默认插入的字符应该是latin-1的(用fullname.decode('utf8')时报该错误)。

然后将从数据库中读取的中文输出到网页,如果没有任何内容显示,加入以下代码可解决:

  1. import sys 
  2. reload(sys) 
  3. sys.setdefaultencoding('utf-8'

Python内部处理编码默认是ascii的: print sys.getdefaultencoding()

mysql-python 汉字乱码解决方案

(2013-05-10 22:09:27)
标签:

mysql

python

utf-8

乱码

it

分类: python

转载于 http://hi.baidu.com/onekunp/item/80771e3fd63905be124b1440

Python MySQLdb 使用utf-8 编码插入中文数据

用Python的MySQLdb插入UTF-8编码的内容时经常会出问题,主要是Mysql数据库编码和python程序文档编码两个方面。本文旨在提供一个例子来解决Python插入UTF8中文数据的问题

使用环境:
Python 2.5 for Windows
MySQLdb 1.2.2 for Python 2.5
MySQL 4.1.22

源代码如下:

#!/usr/bin/env python
#coding=utf-8

import MySQLdb

#DB parameter
strHost = '192.168.6.184'
strDB = 'test'
strUser = 'root'
strPasswd = 'admin1111'

#connect to DB
conn = MySQLdb.connect(host=strHost, db=strDB, user=strUser, passwd=strPasswd, charset="utf8")
curs = conn.cursor()

curs.execute("SET NAMES utf8")
curs.execute("SET CHARACTER_SET_CLIENT=utf8")
curs.execute("SET CHARACTER_SET_RESULTS=utf8")
conn.commit()

strVal = "广州"
strSql = "INSERT INTO t1( val ) values( '%s' )" % strVal
ret = curs.execute(strSql)
conn.commit()

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值