为了账号安全,请及时绑定邮箱和手机立即绑定

UTF-8 编码有问题;我存储的内容和我在用户界面中看到的内容

UTF-8 编码有问题;我存储的内容和我在用户界面中看到的内容

慕沐林林 2021-11-11 18:19:20
我遇到了 utf8 编码的问题。它正确存储在数据库中,但在 UI 上没有完全相同。就像 ÇÈÆ 保存在数据库中一样,我在 UI 上得到了 ÃÃÃ。我究竟做错了什么?
查看完整描述

1 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

当您在 MySQL 数据库中处理非 ASCII 字符时,使用 utf8mb4 而不是 utf8 更安全。MySQL utf8 不是真正的 utf8,因为它只使用最多 3 个字节来存储 Unicode 字符,这是不正确的,因为有些 Unicode 字符甚至像 emoji 字符一样占用四个字节,也可能是其他字符。

一旦您在 MySQL 中选择的编码正确,您可能仍会由于以下原因遇到问题,

  1. 您需要确保您的 jdbc 连接字符串正确并
    在其中设置此参数, useUnicode=true

  2. 当您返回包含 unicode 字符的响应时,请确保正确设置响应编码,如下所示,

    httpServletResponse.setContentType("text/json; charset=UTF-8");

如果您不这样做,您的响应将显示意外字符。

  1. 在客户端阅读响应后,请确保使用 UTF8 编码而不是默认编码,默认编码可能是特定于平台的,如 CP1252 等。

如果您在以上三点中做错了任何事情,您将看不到预期的 unicode 字符。有时候,当我们把每件事都做对了,只是在上述任何一点上犯了一个错误,这真的很令人沮丧。


查看完整回答
反对 回复 2021-11-11
  • 1 回答
  • 0 关注
  • 162 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信