Spring MVC 应用程序中的 UTF8 转换错误
我在 Spring HTTP 消息转换方面遇到了一些问题。在我的应用程序中,我有登录表单。 当注册用户尝试登录时,他收到登录错误(重定向到 /login?login_error=1) 实际输入的用户名是 ¡£¤¥ §¡©ª«Ø®́°±²³
请求内容为 http://bit.ly/oCmwwP
UsernamePasswordAuthenticationFilter 将错误编码的用户名作为输入参数。
例如,预期的用户名(编码为 ¡¤¤¥ §¡©ª«Ø®̄°±²³)是 %C2%A1%C2%A2%C2%A3%C2%A4%C2%A5%C2%A6%C2%A7%C2%A8%C2%A9%C2%AA%C2%AB%C2%AC%C2 %AD%C2%AE%C2%AF%C2%B0%C2%B1%C2%B2%C2%B3
但实际输入数据是 A?A?A?A¤A?A|A§A?A©A?A«A-AA®A?A°A±A?A?
您也可以在调试器屏幕截图中看到它 http://bit.ly/qIWFLj
我认为问题可能出在“application/x”的Spring消息转换器上-www-form-urlencoded”内容。 我找不到哪个转换器对输入数据进行了此类转换。
我正在使用 Apache Tomcat 版本 6.0.26。
web.xml - bit.ly/ph0t7j
感谢您的宝贵时间。我非常感谢您的帮助
I have some trouble with Spring HTTP message conversion. In my app I have the login form.
When registered user try to login he get the login error ( redirect to /login?login_error=1)
The actual input username is
¡¢£¤¥¦§¨©ª«¬®¯°±²³
The request content is
http://bit.ly/oCmwwP
The UsernamePasswordAuthenticationFilter get as input parameter the miscoded username.
For example, the expected username (encoded ¡¢£¤¥¦§¨©ª«¬®¯°±²³) is
%C2%A1%C2%A2%C2%A3%C2%A4%C2%A5%C2%A6%C2%A7%C2%A8%C2%A9%C2%AA%C2%AB%C2%AC%C2%AD%C2%AE%C2%AF%C2%B0%C2%B1%C2%B2%C2%B3
But the actual input data is
A?A?A?A¤A?A¦A§A?A©A?A«A¬AA®A?A°A±A?A?
Also you may see it on the debugger screenshot
http://bit.ly/qIWFLj
I think the problem may be with Spring message converter for the "application/x-www-form-urlencoded" content.
I couldn't find what converter made such conversion for the input data.
I'm using Apache Tomcat Version 6.0.26.
web.xml - bit.ly/ph0t7j
Thank you for your time. I would really appreciate for any help
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我已经解决了这个问题。
解决方案
我已将 web.xml 中的编码过滤器移至过滤器链中的第一位。
I have solved this issue.
Solution
I have moved the encoding-filter in the web.xml to the first place in the filter chain.