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

我遇到了 utf8 编码的问题。它正确存储在数据库中,但在 UI 上没有完全相同。就像 ÇÈÆ 保存在数据库中一样,我在 UI 上得到了 ÃÃÃ。我究竟做错了什么?


慕沐林林
浏览 163回答 1
1回答

撒科打诨

当您在 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 字符。有时候,当我们把每件事都做对了,只是在上述任何一点上犯了一个错误,这真的很令人沮丧。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java