undertow服务器的中文乱码问题

前端发送中文字符串之后,后台接受到的是乱码

查了很多地方,感觉这个问题只有在content-type为"application/x-www-form-urlencoded"时才会出现,接着又查到这篇文章,有兴趣的可以去看看.

结论就是客户端发送不规范导致的解码问题,如果可以修改前端代码,这样最好,改一下就行了,像我这样第三方回调回来的数据,我就只能换容器了


评论区

JFinal

2019-09-03 10:19

客户端不要使用 url 传递参数,常见的是在 url 中问号挂参,只要是利用 url 传参就是不支持中文的

可以用 form 表单传参,如果表单传参也是乱码,配置一下:
me.setEncoding(正确的字符编集);

记得搞定后再来反馈

JFinal

2019-09-03 10:24

这个问题的麻烦之处,如果写代码进行转码,有些原来正常的编码又会变得不正常,所以最好的解决办法是不使用 url 传参,而是发 post 请求在 body 中传参

并且将字符编码全部统一为 UTF-8

li7

2021-04-23 12:45

这是 undertow 的问题。是undertow对http请求字节的转换处理,在io.undertow.server.handlers.form.FormEncodedDataDefinition.doParse() 方法中,undertow对我们的参数直接进行了强制char型转换。具体见这里 https://issues.redhat.com/browse/UNDERTOW-1278?jql=text%20~%20%22urlencoding%22。把 jfinal-undertow 升级到 2.5 就可以解决了。

热门分享

扫码入社