Python環境コードとMySQL中国語コード操作


30時間のcodingを経て、やっと符号化の問題を解決した.過程と体験を記録します:P

MySQLデータベース側:

データベースの作成はUTF 8をサポートする.
CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
多くの場合、デフォルトではCOLLATE utf 8が選択されます.general_ci、これは中国語のサポートによくありません.私はここで間違っています.
Python符号化について:
1ファイルのエンコーディングを指定する必要があります.
#-*-coding:utf-8-*-


2いくつかの環境でこれを使用できます:
reload(sys);sys.setdefaultencoding('utf-8')


3 pythonの文字列は「unicode」と「str」
に分かれています
-1 strとは、符号化された文字列を指す
-2 unicodeとは、符号化されていない文字列を指す
この2つの概念の相互変換はこのように行われています.
str ------>   unicode --------> str
   decode             encode
デコードコーディング
最も簡単な例を挙げます.

  
  
  
  
>>> a = ' ' >>> a '\xd6\xd0' >>> b = u' ' >>> b
u'\u4e2d' [color=red][b] ' ' gbk b[/b]


以上の説明によれば、bは符号化されないaの値であるべきである(どうせaはbがgbk符号化された値である)
そして、私たちは
>>> 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.blogjava.net/vulcan/articles/160978.html
http://www.yuanma.org/data/2006/0907/article_1476.htm