1

我有一个 AngularJS 前端和一个带有 Jackson 的 Spring MVC 后端来处理序列化和 JS<->Java 转换

当我通过 http 正文有效负载将诸如“ö、ä、ü、ß”之类的德语字符传递到我的后端时,没有问题。我有标题“Content-Type”“application/json;charset=UTF-8”,一切正常。但是,如果我的 url 中有这些字符,则对它们进行角度编码。这很好,但是它以杰克逊试图解码的不同方式对它们进行编码,我相信。

这是 Angular 从“höhe”中得到的:h%C3%B6he 我相信杰克逊期望:h%f6he

我认为这是因为 UTF8 是 2 字节,而 ASCII 是 1 字节编码。但是,Jackson 或 Angular 是否有设置“使用相同的编码语言”?

谢谢你的帮助!亲切的问候,帕斯卡

4

1 回答 1

0

Jackson 不处理 URL 解码,因为它需要一个输入源,例如InputStreamor String:很可能是运行该服务的 Servlet 容器(Jetty?)来处理这个问题。一个问题是应该使用哪个编码 URL 的定义是......好吧,定义很差:“Content-Type”没有定义这个(它只是用于有效负载)。

因此,您需要弄清楚如何使 servlet 容器和客户端对要使用的编码有共同的理解(在您的情况下,差异看起来像 UTF-8 与 Latin-1)。或者:如果您可以使用 JSON 转义序列使客户端转义所有非 ASCII 字符,那也可以。

于 2013-05-31T23:08:03.847 回答