我遇到了 utf8 编码的问题。它正确存储在数据库中,但在 UI 上没有完全相同。就像 ÇÈÆ 保存在数据库中一样,我在 UI 上得到了 ÃÃÃ。我究竟做错了什么?
1 回答
撒科打诨
TA贡献1934条经验 获得超2个赞
当您在 MySQL 数据库中处理非 ASCII 字符时,使用 utf8mb4 而不是 utf8 更安全。MySQL utf8 不是真正的 utf8,因为它只使用最多 3 个字节来存储 Unicode 字符,这是不正确的,因为有些 Unicode 字符甚至像 emoji 字符一样占用四个字节,也可能是其他字符。
一旦您在 MySQL 中选择的编码正确,您可能仍会由于以下原因遇到问题,
您需要确保您的 jdbc 连接字符串正确并
在其中设置此参数, useUnicode=true当您返回包含 unicode 字符的响应时,请确保正确设置响应编码,如下所示,
httpServletResponse.setContentType("text/json; charset=UTF-8");
如果您不这样做,您的响应将显示意外字符。
在客户端阅读响应后,请确保使用 UTF8 编码而不是默认编码,默认编码可能是特定于平台的,如 CP1252 等。
如果您在以上三点中做错了任何事情,您将看不到预期的 unicode 字符。有时候,当我们把每件事都做对了,只是在上述任何一点上犯了一个错误,这真的很令人沮丧。
添加回答
举报
0/150
提交
取消