12-连接字符集和校对规则
上面4种设置方式,确定的是数据保存的字符集和校对规则,对于实际的应用访问来说,还存在客户端和服务器之间交互的字符集和校对规则的设置。
对于客户端和服务器的交互操作,MySQL提供了3个不同的参数:character_set_client、character_set_connection和character_set_results,分别代表客户端、连接和返回结果的字符集。通常情况下,这3个字符集应该是相同的,才可以确保用户写入的数据可以正确地读出,特别是对于中文字符,不同的写入字符集和返回结果字符集将导致写入的记录不能正确读出。
通常情况下,不会单个地设置这3个参数,可以通过以下命令:
SET NAMES ***;
来设置连接的字符集和校对规则,这个命令可以同时修改这3个参数的值。使用这个方法修改连接的字符集和校对规则,需要应用每次连接数据库后都执行这个命令。
另一个更简便的办法,是在my.cnf中设置以下语句:
[mysql]
default-character-set=gbk
这样服务器启动后,所有连接默认就是使用GBK字符集进行连接的,而不需要在程序中再执行 set names命令。另外,字符串常量的字符集也是由 character_set_connection参数来指定的。
可以通过“[_charset_name]'string' [COLLATE collation_name]”命令强制字符串的字符集和校对规则。例如:
select _gbk '字符集';
select _latin1 '字符集';
通常情况下,基本不需要用户强制指定字符串字符集。