python sqlobject(mysql)中文亂碼解決方法
找了一天終于搞明白了,默認情況下,mysql連接的編碼是latin-1,你需要指定使用什么編碼方式:
connectionForURI(mysql://user:password@localhost:3306/eflow?use_unicode=1&charset=utf8)
Python mysql 中文亂碼 的解決方法,有需要的朋友不妨看看。
先來看一段代碼:
import MySQLdb
db_user = "tiger"
db_pw = "tiger"
db = MySQLdb.connect(host="localhost", user=db_user, passwd=db_pw ,db="finaltldw",charset="gb2312")
c = db.cursor()
c.execute("""select id, name from NODES""")
i=0;
for id, name in c.fetchall():
print "%2d %s" % (id, name)
i=i+1
if i==100:
break
返回結(jié)果:
1 TOP
2 教育
3 機構(gòu)
4 人
5 地區(qū)
6 單位
7 科學研究
8 實驗室
9 類型
如果編碼是UTF-8
轉(zhuǎn)載一個解決方案: 其中的use db
Python操作MySQL以及中文亂碼的問題
Python操作MySQL需要安裝Python-MySQL
可以從網(wǎng)上搜索一下,和一般的Python包一樣安裝
安裝好之后,模塊名字叫做MySQLdb ,在Window和Linux環(huán)境下都可以使用,試驗了一下挺好用,
不過又發(fā)現(xiàn)了煩人的亂麻問題,最后用了幾個辦法,解決了!
我用了下面幾個措施,保證MySQL的輸出沒有亂麻:
1 Python文件設(shè)置編碼 utf-8 (文件前面加上 #encoding=utf-8)
2 MySQL數(shù)據(jù)庫charset=utf-8
3 Python連接MySQL是加上參數(shù) charset=utf8
4 設(shè)置Python的默認編碼為 utf-8 (sys.setdefaultencoding(utf-8)
mysql_test.py
#encoding=utf-8
import sys
import MySQLdb
reload(sys)
sys.setdefaultencoding('utf-8')
db=MySQLdb.connect(user='root',charset='utf8')
cur=db.cursor()
cur.execute('use mydb')
cur.execute('select * from mytb limit 100')
f=file("/home/user/work/tem.txt",'w')
for i in cur.fetchall():
f.write(str(i))
f.write(" ")
f.close()
cur.close()
上面是linux上的腳本,windows下運行正常!
注:MySQL的配置文件設(shè)置也必須配置成utf8
設(shè)置 MySQL 的 my.cnf 文件,在 [client]/[mysqld]部分都設(shè)置默認的字符集(通常在/etc/mysql/my.cnf):
[client]
default-character-set = utf8
[mysqld]
default-character-set = utf8
相關(guān)文章
Django Rest framework之權(quán)限的實現(xiàn)示例
這篇文章主要介紹了Django Rest framework之權(quán)限的實現(xiàn)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12