您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

UTF-8字符有问题;我看到的不是我存储的

UTF-8字符有问题;我看到的不是我存储的

这个问题困扰着该站点的参与者以及其他许多人。

您列出了五个主要的CHARACTER SET麻烦案例。

展望未来,最好使用CHARACTER SET utf8mb4COLLATION utf8mb4_unicode_520_ci。(管道中有更新版本的Unicode排序规则。)

utf8mb4是的超集utf8,它处理4字节utf8代码,表情符号和某些中文需要这些代码

MysqL之外,“ UTF-8”是指所有大小的编码,因此实际上与MysqL相同utf8mb4,而不是utf8

在下文中,我将尝试使用这些拼写和大写字母来区分MysqL内部和外部。

UTF-8贯穿始终

有关计算机语言的更多详细信息(及其后续部分)

使用工具或工具查看数据SELECT是不可信的。太多这样的客户端,尤其是浏览器,试图补偿不正确的编码,并向您显示正确的文本,即使数据库已损坏。因此,选择一个包含非英语文本的表和列,然后执行

SELECT col, HEX(col) FROM tbl WHERE ...

正确存储的UTF-8的十六进制将为

文字SeSeñor):

与问号(Se?orSeñor); 存在以下情况之一:

情况1(原始字节 不是 UTF-8):

情况2(原始字节 UTF-8):

仅当浏览器设置为时,才会出现黑色菱形<Meta charset=UTF-8>

(常规的,不是黑钻石)(Se?or用于Señor):

Señorfor Señor):(此讨论也适用于 ,它不一定可见。)

如果数据看起来正确,但排序不正确,则说明您选择了错误的排序规则,或者没有适合您的排序规则,或者您使用 。

é should come back C3A9, but instead shows C383C2A9
The Emoji 
  

          

解决方法

我试图使用UTF-8并遇到麻烦。

我尝试了很多事情;这是我得到的结果:

  • ????而不是亚洲字符。即使是欧洲文字,我也能Se?or接受Señor
  • 奇怪的乱码(变为乱码?),如Señor新浪新闻新浪新闻
  • 黑钻石,例如Seor。
  • 最终,我陷入了数据丢失或至少被截断的情况:Sefor Señor
  • 即使我 看到 正确的文本,它也无法正确 排序

我究竟做错了什么?我该如何修复 代码 ?我可以恢复 数据 吗?

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

我试图使用UTF-8并遇到麻烦。

我尝试了很多事情;这是我得到的结果:

我究竟做错了什么?我该如何修复 代码 ?我可以恢复 数据 吗?

其他 2022/1/1 18:21:20 有315人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶