MySQL数据库字符编码集合 不指定

jed , 2008-5-15 07:26 , 数据库技术 , 评论(0) , 阅读(4846) , Via 本站原创 | |
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′。
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]