标题:MySQL数据库字符编码集合 出处:沧海一粟 时间:Thu, 15 May 2008 07:26:28 +0000 作者:jed 地址:http://www.dzhope.com/post/428/ 内容: 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′。 Generated by Bo-blog 2.1.1 Release