首页 > 学技术 > 技术网文 > Python > 正文

[原创] [总结]解决 MySQLdb 操作数据库时的中文问题


来源 chinaunix.net 酷勤网整理

以下是我最近写两个小程序时用 MySQLdb 的一些经验,用以解决中文问题。[url=http://www.bsdlife.org/viewtopic.php?id=122]原文。

请大家指教:

再此再总结一下,上面的方法还不够全面:

* 设置 MySQL 的 my.cnf 文件,在 [client]/[mysqld]部分都设置默认的字符集:
[client]

default-character-set = utf8
[mysqld]
default-character-set = utf8

该设置需要重新启动 MySQL 服务器。启动之后在 mysql 命令行下可以用 'status' 命令查看:
mysql> status

--------------
mysql  Ver 14.12 Distrib 5.0.26, for -netbsdelf (i386) using  EditLine wrapper

Connection id:          16
Current database:       
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.0.26-log
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /tmp/mysql.sock
Uptime:                 1 hour 7 min 49 sec

* 在创建表的时候,加上 default character='utf8' 这样的语句:
CREATE TABLE IF NOT EXISTS table_name (key, key, key)

    VALUES (value, value, value)
    DEFAULT CHARSET='utf8'

* 在执行 MYSQL 语句时先执行 'SET NAMES 'utf8'' 语句:
SET NAMES 'utf8'

这样基本就能搞定中文问题了。

[ 本帖最后由 MichaelBibby 于 2007-3-6 17:50 编辑 ]



 congli 回复于:2007-03-06 16:36:20

学习^_^


 MichaelBibby 回复于:2007-03-06 17:51:26

更正一下。

原文:
引用:
* 在创建表的时候,加上 default character='utf8' 这样的语句:
CREATE TABLE IF NOT EXISTS table_name (key, key, key)

    VALUES (value, value, value)
    DEFAULT CHARACTER='utf8'




应该改为:

DEFAULT CHARSET='utf8'





原文链接:http://bbs.chinaunix.net/viewthread.php?tid=905650
转载请注明作者名及原文出处



收藏本页到: