mysql latin1字符集与中文关系分析

发布时间:2020-09-21编辑:脚本学堂
有关mysql数据库latin1字符集与中文关系探讨,mysql中latin1字符集显示中文字符时会有乱码,如何解决中文的问题呢,可以参考下这里提供的方法。

总结:
不同的字符集编码了不同的字符,latin1中包含有191个可打印字符,其余是控制字符或者扩展的欧洲特殊字符
不包含中文字符。

可以在latin1中保存和显示中文字符。

例子:
latin1字符集与ascii字符集都可以存储中文(ascii就不列举)
 

复制代码 代码示例:
CREATE TABLE `user` (
`name` varchar(100) DEFAULT NULL
) ENGINE=innodb DEFAULT CHARSET=latin1
set names latin1;
insert into user values("我们");
mysql>select * from user;
+--------+
| name   |
+--------+
| 我们   |
+--------+
1 row in set (0.00 sec)
 

使用set names latin1之后,character_set_client、character_set_connection、character_set_results都将设置为ascii编码,不会做任何编码转化(编码转化会涉及到重新编码,因为不同的字符集对同一个字符的编码不一样;以及新字符集无法编码旧字符集中字符的问题)。

如果改成set names utf8,则insert的时候,character_set_connection->column character set时,会将utf8编码强行转化成latin1,转化时超出latin1编码范围的字符全部转化成0x3F(latin1中的?)。