經(jīng)過30個(gè)小時(shí)的coding,終于解決了編碼問題.現(xiàn)在把過程和體會(huì)記錄下來:P
MySQL 數(shù)據(jù)庫方面: 數(shù)據(jù)庫的創(chuàng)建支持UTF8: CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; 很多時(shí)候,默認(rèn)的會(huì)選擇COLLATE utf8_general_ci,這個(gè)對中文支持不好.我就是錯(cuò)在這里了,。 Python 編碼方面: 1指定文件編碼是必須的:
#-*-coding:utf-8-*- 2某些環(huán)境下可以使用這個(gè):
reload(sys);sys.setdefaultencoding('utf-8') 3python的字符串分為"unicode"和"str" -1 str 是指帶有編碼的字符串 -2 unicode 是指不帶有編碼的字符串 這兩個(gè)概念的相互轉(zhuǎn)換是這樣進(jìn)行的: str ------> unicode --------> str decode encode 解碼 編碼 舉個(gè)最簡單的例子:
根據(jù)上面的描述,,b應(yīng)該是不進(jìn)行編碼的a的值(反正a就是b帶有g(shù)bk編碼的值) 于是,,我們可以得到 >>> a.decode( 'gbk' ) u'\u4e2d' 同樣也可以得到 >>> b.encode( 'gbk' ) '\xd6\xd0' 所以一般的
xxx.decode('gbk').encode('utf-8') 4.MySQLdb操作
conn=MySQLdb.connect(host,usr,pwd,db,charset='utf8') PHP讀取操作:
<?php $conn=mysql_connect($hostname='127.0.0.1',$username='root',$password=''); mysql_select_db('text'); mysql_query("set names 'utf8'"); $sql='select text from text where id = 1'; $result=mysql_query($sql,$conn); while ($row = mysql_fetch_assoc($result)){ print $row['text']; } ?> 更多可以參考: http://www./vulcan/articles/160978.html http://www./data/2006/0907/article_1476.htm |
|