URL表单编码AngularJS和Jackson后端之间的特殊德语字符

时间:2013-05-31 18:13:30

标签: spring encoding angularjs jackson

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

当我通过http body有效载荷将“ö,ä,ü,ß”等德语字符传递给我的后端时,没有问题。我有标题“Content-Type”“application / json; charset = UTF-8”,一切正常。 但如果我在我的网址中有这些字符角度编码他们。这很好但是它以不同的方式编码它们杰克逊试图解码我相信。

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

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

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

1 个答案:

答案 0 :(得分:0)

Jackson不处理URL解码,因为它需要输入源,例如InputStreamString:服务运行的Servlet容器(Jetty?)很可能处理此问题。一个问题是,编码URL应该使用的定义是......好吧,实际上定义不明确:“Content-Type”没有定义这个(它仅用于有效载荷)。

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