仓库人行通道宽度:[Python]MySQL中文字符与Python中文字符
来源:百度文库 编辑:偶看新闻 时间:2024/04/27 22:29:46
经过30个小时的coding,终于解决了编码问题.现在把过程和体会记录下来:P
MySQL 数据库方面:
数据库的创建支持UTF8:
CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
很多时候,默认的会选择COLLATE utf8_general_ci,这个对中文支持不好.我就是错在这里了。
Python 编码方面:
1指定文件编码是必须的:
Python代码
2某些环境下可以使用这个:
Python代码
3python的字符串分为"unicode"和"str"
-1 str 是指带有编码的字符串
-2 unicode 是指不带有编码的字符串
这两个概念的相互转换是这样进行的:
str ------> unicode --------> str
decode encode
解码 编码
举个最简单的例子:
Python代码
根据上面的描述,b应该是不进行编码的a的值(反正a就是b带有gbk编码的值)
于是,我们可以得到
>>> a.decode( 'gbk' )
u'\u4e2d'
同样也可以得到
>>> b.encode( 'gbk' )
'\xd6\xd0'
所以一般的
Python代码
4.MySQLdb操作
Python代码
PHP读取操作:
Php代码
更多可以参考:
http://www.blogjava.net/vulcan/articles/160978.html
http://www.yuanma.org/data/2006/0907/article_1476.htm
MySQL 数据库方面:
数据库的创建支持UTF8:
CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
很多时候,默认的会选择COLLATE utf8_general_ci,这个对中文支持不好.我就是错在这里了。
Python 编码方面:
1指定文件编码是必须的:
Python代码
- #-*-coding:utf-8-*-
#-*-coding:utf-8-*-
2某些环境下可以使用这个:
Python代码
- reload(sys);sys.setdefaultencoding('utf-8')
reload(sys);sys.setdefaultencoding('utf-8')
3python的字符串分为"unicode"和"str"
-1 str 是指带有编码的字符串
-2 unicode 是指不带有编码的字符串
这两个概念的相互转换是这样进行的:
str ------> unicode --------> str
decode encode
解码 编码
举个最简单的例子:
Python代码
- class=quote_title>引用class=quote_div>>>> a = '中'u'\u4e2d' [color=red][b]即保存'中'的gbk值做为b[/b]
- >>> a
- '\xd6\xd0'
- >>> b = u'中'
- >>> b
引用>>> a = '中'>>> a'\xd6\xd0'>>> b = u'中'>>> bu'\u4e2d' [color=red][b]即保存'中'的gbk值做为b[/b]
根据上面的描述,b应该是不进行编码的a的值(反正a就是b带有gbk编码的值)
于是,我们可以得到
>>> a.decode( 'gbk' )
u'\u4e2d'
同样也可以得到
>>> b.encode( 'gbk' )
'\xd6\xd0'
所以一般的
Python代码
- xxx.decode('gbk').encode('utf-8')
xxx.decode('gbk').encode('utf-8')
4.MySQLdb操作
Python代码
- conn=MySQLdb.connect(host,usr,pwd,db,charset='utf8')
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
为什么在mysql中插入的中文字符都是乱码?
python 开发工具 中文
MYSQl 特殊字符
python的文件格式有两种,"*.py"和"*.pyw",它们有什么不同?
mysql中文问题
mysql中文问题
mysql 中文显示问题
mysql 中文无法显示
MYSQL数据库中用什么表示任意字符?
wap 中文字符传递??
delphi与mysql问题
delphi与mysql问题
PHP与MYSQL
怎么让mysql支持中文?
关于MYSQL的中文问题
[ASP]新用户注册时,用户名只能用数字字符下划线与中文
让lunix 支持中文字符
gbk字符转换为中文
php 怎么判断中文字符?
科尔特KING COBRA与PYTHON HUNTER有什么区别?
php 与 mysql连接问题
mysql front 中文显示乱码问题!!谢谢!
MySql+jsp中文乱码问题,求解。谢谢!
MySQL参考手册中文完整翻译版