gpt4 book ai didi

Spring 表单和 UTF-8 错误编码

转载 作者:行者123 更新时间:2023-12-02 10:42:22 29 4
gpt4 key购买 nike

在我们的 Web 应用程序中,我们遇到了严重的编码问题。为了重现此问题,用户在浏览器中选择非 unicode 编码(例如 chrome -> 更多工具 -> 编码 -> Koi8)并尝试设置西里尔文本。当它进入 Controller 时(仅在调试时检查),字符被破坏,甚至它的存储和渲染不正确。
我们已遵循所有建议:http://balusc.blogspot.com/2009/05/unicode-how-to-get-characters-right.html似乎这是提交 application/x-www-form-urlencoded 编码内容类型的问题。因为在此类表单提交期间不可能设置字符集。
例如,如果使用 json 提交相同的数据并设置必要的内容类型,则所有内容都会正确存储。我们还尝试了本文的示例: http://www.codejava.net/frameworks/spring/spring-mvc-form-handling-tutorial-and-example并使用以下方法另外添加 UTF8 文件管理器:

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {

request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}

但是同样的问题是可以重现的。有人可以建议如何解决上述问题吗?
是否可以在 Spring MVC 中正确处理提到的用例,因为我们尝试了简单的示例,但似乎不起作用。这种更改浏览器编码的用例是否有效?

最佳答案

尝试:在 web.xml 中

<filter>
<filter-name>encoding-filter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>encoding-filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

引用:http://wiki.apache.org/tomcat/FAQ/CharacterEncoding

另外,在查看如果使用jSTL尝试设置默认编码

关于Spring 表单和 UTF-8 错误编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28940800/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com