Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101409732
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Mysql/postgreSQL

2008-04-26 16:40:14


 
MySQL数据库字符集的默认配置:

       在mysql的配置文件中把默认的字符集改成utf8,这样创建数据库和表的时候,默认的字符集就是utf8。

MySQL的几个变量:

当一个 PHP 程序与 MySQL 建立连接后,这个程序发送给 MySQL 的数据采用的是什么字符集?mysql如何检测并判断使用何种字符集?要注意以下几个变量:

      character_set_server:这是设置服务器使用的字符集
     
character_set_database:这是设置数据库使用的字符集
      character_set_client :这是设置客户端发送Query串使用的字符集
      character_set_connection :这是设置服务器需要将收到的查询串转换成的字符集
      character_set_results :这是设置服务器要将结果数据转换到的字符集,转换后才发送给客户端

因为配置文件设置的 default_character_set 是 utf8,数据表默认采用的就是 utf-8 建立的。这也应该是所有采用 MySQL 4.1 的主机提供商应该采用的配置。所以我们要保证的只是客户端与 MySQL 交互之间指定编码的正确。
这只有两种可能,客户端以 gb2312 格式发送数据,或者以 utf-8 格式发送数据
如果以 gb2312 格式发送:
SET character_set_client='gb2312'
  • SET character_set_connection='utf8' 或者
  • SET character_set_connection='gb2312'
  • 都是可以的,都能够保证数据在编码转换中不出现丢失,也就是保证存储入数据库的是正确的内容。
    怎么保证取出的是正确的内容呢?考虑到绝大部分客户端 (包括 WP),发送数据的编码也就是它所希望收到数据的编码,所以:
  • SET character_set_results='gb2312'
  • 可以保证取出给浏览器显示的格式就是 gb2312。不过这样的缺点是不论是插入、更新、删除还是查询操作,只要是操纵数据库,都要先执行SET NAMES "gb2312",这样才能保证插入和显示的正确性。如果插入操作前没有执行这条语句,仅在查询时执行该语句,则仍然无法保证显示的正确性。
    如果是第二种情况,客户端以 utf-8 格式发送 (WP 的默认情况),可以采用下述配置:
  • SET character_set_client='utf8'
  • SET character_set_connection='utf8'
  • SET character_set_results='utf8'
  • 这个配置就等价于 SET NAMES ‘utf8′
    阅读(434) | 评论(0) | 转发(0) |
    给主人留下些什么吧!~~