mysql新建数据库选什么字符集

嘿,你问我应该选择哪种MySQL字符集?这取决于具体情况。

例如,上周一位正在构建电子商务网站的客户问我为什么当他添加日语注释时代码会变得混乱。
我看了一下,发现数据库字符集是古老的UTF8 ,后来改成了UTF-8 mb4 想想看,现在谁不用表情呢?所有标点符号和中文字符必须为 UTF-8 mb4
这个东西最好的一点是它是向后兼容的。
我把一个旧系统升级到2 02 2 ,直接从UTF8 改成UTF-8 mb4 ,没有任何问题。
另外,常用的字符只有1 -2 个字节,因此存储时不占用空间。

当然,如果你只存储英文字母和数字,并且对效率要求极高,那么也可以使用UTF8 但我自己遇到的坑是,我用UTF8 存储一些欧洲符号,导入的数据直接被截断,非常郁闷。
因此,UTF8 应该谨慎使用,不要用它来做不该做的事情。

另一个陷阱是表级字符集。
我之前看过一个项目。
表是latin1 ,字段是utf8 最后的结果,连我自己都无法理解。
除非您确切知道原因,否则不要这样做。

不要搞乱字符集转换。
上次用CONVERT()发现那些不兼容的字符直接转换成了乱码,差点把我吓死。

最后说一下最容易被忽视的客户。
我有一个朋友写了一个API,但是他这边的character_set_client不匹配。
结果,用户发送的汉字在他这边是乱码的。
所以,你也应该注意这一点。

如果你不明白,我建议你直接使用UTF-8 mb4 除非你确定只会用英文,而且数据量特别大,有硬空间要求。
无论如何,这取决于你。
这个问题没有绝对的标准答案。

mysql创建数据库选字符集时错误原因及整改措施

记得有一次,我正在为公司的一个新项目建立数据库,一切都很顺利,直到我尝试创建数据库,MySQL告诉我创建失败,因为字符集错误。
我查了一下,发现我创建数据库的时候选择的是UTF8 MB4 ,但是MySQL服务器的默认字符集是Latin1 这太尴尬了,我立刻想起了一个场景。
那天我的朋友正在学中文。
他举起一本繁体版的《红宫梦》,翻着翻着,感叹道:“哎呀,繁体字看着好累啊。
”我随口问道:“你是怎么学的?”他摇摇头,“一开始我发现自己认识的单词不多,得查字典。
”我当时觉得学习一门语言应该从基础开始,就像数据库的字符集问题一样,也应该从基础开始解决。

所以我开始一步步检查。
首先,我运行了 SHOW CHARACTERSET;命令。
正如预期的那样,UTF8 MB4 不在服务器支持的字符集列表中。
我发现必须升级MySQL版本或者安装相应的字符集支持包。
我查了网上的教程,按照步骤操作,终于成功让MySQL支持UTF8 MB4
接下来,我回到创建数据库的地方。
这次我默认选择MySQL5 .7 +支持的UTF8 MB4 字符集,数据库创建成功。
这时我突然想到,以后建数据库的时候,是不是应该提前检查一下服务器的字符集支持呢?毕竟,避免此类问题总是比事后解决更容易。