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′。
https://blog.51cto.com/xionghui/30924