mysql字符集设置的级别有服务器、数据库、表、列等。
如果某一个级别上没有声明使用的字符集,则继承上级的字符集设置。
client——》 connector ————》server
数据从客户端发送到 连接器 ,然后再发送到服务器。
client, connector, server都有自己的编码格式。
client要告诉服务器自己的数据是什么编码? set character_set_client xxx;
connector收到client的数据,然后转换为自己的编码格式?set character_set_connector xxx;
告诉连接器自己期望的结果集字符编码? set charactor_set_results xxx;
当上边的三中编码一样的话,可以使用set names xxx;
在下边三中情况下,会出现乱码:
1,client声明和事实不符。
2. result声明和事实不符。
丢失数据:
当数据从字符集大的往小的中转换的话,就会丢失数据。
校对集: 字符集排序的规则。一个字符集对应多个校对集。
urf8默认使用的是utf8_general_ci校对集。在声明表的时候,添加上使用的校对集。
creat table() charset utf8 collate utf8_general_ci;