mysql数据库如何查看编码

哈,我花了很长时间才理解MySQL编码。
你总结的很全面。
我会告诉你更多我遇到的陷阱和我理解的细节。

上周有客户问我,为什么他将Excel数据导入MySQL时,中文文本被截断了。
我看了一下,好吧,客户端默认使用的是latin1 ,数据库和表都是utf8 mb4 一定很复杂。

您提到的那些命令,我​​将按场景为您分解:
1 查看全局设置的最快方法:首先使用 SHOW VARIABLES LIKE 'character_set_%';。
速度非常快,在服务器底层直接告诉你怎么玩。
比如当前库使用的Character_set_server是什么,Character_set_database是什么。
上次在上海培训的时候,老师要求我们先迈出这一步,从根本上解决问题。

2 看表和字段的具体参数:这个是最关键的!如果全局值为utf8 mb4 ,但是你的一个表使用DEFAULT CHARSET=latin1 ,那么导入的中文数据将会被截断。
此时您应该使用 SHOW CREATE TABLE your_table_name;或显示表状态 WHERE Name='your_table_name';。
注意默认的排序规则和字符集。
上次调试电商系统是因为有一个旧的采购订单还是Latin1 ,这让我抓狂。
我什至不记得桌子的名字。
它被简单地称为old_order_data。
我忘了。

3 对登录过程进行编码:这一点特别容易被忽视!你提到的client_set_chars、connection_set_chars和results_set_chars应该一致。
我之前在北京的一个项目中就遇到过这种情况。
我开发时使用的是gbk,但是服务器默认是utf8 mb4 结果连接正常,但是查看时数据乱码。
检查了三天,终于发现开发环境变量没有改变。
想想看,这是一个多么大的陷阱啊。

4 INFORMATION_SCHEMA:这是官方推荐的,非常完整。
例如,要检查数据库中所有表的编码,请直接 SELECT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='your_db_name';,然后查看 CHARACTER SET 字段。
上次我为客户创建文档时,我使用了这个。
这比一一使用 SHOW 命令要方便得多。

选择编码要点:
utf8 mb4 :通用工具,但占用大量空间。
现在保存表情符号已经很常见了,所以这基本上就是我使用的。
我建议默认选择它。
latin1 :欧洲人用它来节省空间。
但不要使用它,它几乎不再使用了。
gbk:只有中文,兼容性好。
但如果你想走向国际,那是绝对不可能的。
我有一个中文论坛,GBK没有问题,但是当我添加日语功能时就崩溃了。

最关键的建议:
无论你用哪个命令来搜索,都要确保五层编码——客户端——连接——数据库——表——字段都一致!如果不一致,那就是乱码,相信我!我曾经调试过乱码问题,不得不改四五个地方才修复。
当时我就想骂人。

你总结得很好。
只要注意这几点,实际上就不会有什么大问题。
如果您想知道特定的表或数据库名称,请将它们发送给我们,我会为您查找。

mysql数据库的建完库怎么看字符集

我记得有一次帮我的朋友编辑一个网站。
他的页面上布满了问号和方框,就像读着奇怪的文字一样。
我想这一定和字符集有关。
打开命令行,连接到服务器,输入 SHOW CHARACTER SET,一切都会出现。
utf8 、gbk、latin1 等不同字符集的名称让人眼花缭乱。
他的网站用的是utf8 ,当然转回utf8 就正常了。
你看,有时问题就像查看字符集一样简单。

等一下,还有一件事。
我在公司的数据库中看到过一次。
报告展示了一群饱受折磨的人物。
检查了半天,发现是连接字符集不对。
只需将其设置回数据库默认值 utf8 mb4 即可。
应该是去年夏天的事,地点是公司的机房。
我不记得确切的数字了。
无论如何,当时确实很烦人。
字符集是您在多次使用后就会习惯的东西,但有时它们仍然会保留下来。

突然想到后来朋友问我为什么他的网站支持这么多字符集。
我说,主要原因是兼容性的考虑。
如果用户从旧系统迁移或者访客来自不同地区,所有内容都将无法正常显示。
你看,这是一件小事,但其中有一定的道理。

不过话说回来,现在数据库已经比较成熟了,一般都支持utf8 mb4 ,兼容性也足够好。
很多情况下是不需要专门改变字符集的?或者,是否存在必须手动编辑字符集的特殊情况?这是值得考虑的。

mysql用语句怎么查询字符集

1 .服务器字符集utf8 ,国家字符集来自表utf8 _general_ci,country_name列字符集utf8 _general_ci。
2 . 确保所有字符集一致,避免数据转换错误。
3 .检查字符集不匹配问题并修复数据损坏风险。