MySQL的字符集有很多种,每种字符集都有可能有多种校对规则,每种字符集都有一个默认的校对规则。
只有基于字符的值才真正有字符集的概念,这些都是在进行相应的运算时体现出来,当然是在MySQL层面的比较。
MySQL字符集的设定选项有很多,但是采用的自上而下的继承方式来影响数据库。
创建数据库时,根据character_set_server来影响创建数据库时的默认字符集
创建表的时,将根据数据库的字符集设置来指定表的默认字符集
创建列的时候,将根据表的字符集来设定列的默认字符集
当服务器和客户端通信的时候,它们可能使用不同的字符集,这时,服务器端将进行必要的翻译转换工作。
服务器端总是假设客户端是按照character_set_client的字符集来传输数据和sql语句。
服务器收到客户端的SQL语句时,它先将其转换成character_set_connection指定的字符集,并且使用这个设置来决定如何将数据转换成字符串。
服务器返回数据或者错误信息给客户端的时候,它会将其转换成character_set_result指定的字符集。
根据需要,可以使用set names 或者set character set 语句来改变上面的设置。服务器端上使用这个命令只能改变服务器的设置,客户端程序和客户端API也需要使用正确
的字符集才能避免在通信时出现问题。
阅读(1793) | 评论(0) | 转发(0) |