【发布时间】:2018-10-24 16:04:28
【问题描述】:
我正在尝试在RestController 中查找有关如何处理字符编码的信息。
Spring 似乎完全忽略了Content-Type 标头中发送的字符集。无论使用此标头将哪个字符集发送到服务器,服务器都会尝试将其读取为 UTF-8 并使用字符集 UTF-8 发送响应。
这是一个 GitHub 存储库,其中包含重现此场景的演示:https://github.com/hawk1234/characterEncodingTest
有人可以指出春季文档中描述的位置吗?我遇到了内容协商,但我认为它更多的是关于响应格式而不是编码。
2018 年 11 月 1 日更新
我已经实施了一些测试以更好地显示问题所在。提交 86dc434351d7ee2c142afc8f389e7837810b19f6 包括 EncodingTest 类,它使用不同的编码测试端点。
我还实现了我的编码处理(提交 a26c5da0b25fba8a40e3be41e967e6b1e5c4d546),但它是非常基本的实现,可能不会考虑所有情况。我仍在寻找使用现有库的更简单的解决方案。
【问题讨论】:
-
当前的 JSON RFC 需要 UTF-8。您宁愿 400 或 406 忽略字符集吗? (我不是 Spring 用户,所以我无法在这种情况下做出回应。)你为什么不想使用 UTF-8?
-
@TomBlodget 一旦你使用任何非英文字符,UTF-8 就会成为障碍。 UTF-16 在这方面可能会更好,但有些特定情况是 UTF 无法处理的。
标签: java spring http spring-boot character-encoding