我有一个HTML表单中的文本输入,我的页面配置为使用ISO-8859-15。
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15">当我键入以下字符之一(Œ,œ,Ÿ)并提交表单时,我可以在Firebug中看到它已被转换(25,5,¾),我在调试(Eclipse)时也会看到这一点。我不明白为什么。
维基百科网页:8859-15
发布于 2018-01-15 13:43:45
很好地解释了这个问题。
今天,大多数web浏览器都不指定请求的字符集,即使它不是ISO-8859-1。这似乎违反了HTTP规范。大多数web浏览器似乎使用用于生成POST的页面编码来发送请求主体。
因此,您需要告诉应用程序在传入的HTTP请求中使用哪种编码。
您必须调用以下函数(在任何参数解析之前):
httpServletRequest.setCharacterEncoding("ISO-8859-15");这一点上的最佳实践似乎是设置一个javax.servlet.Filter来执行此操作。春天来临时,我们需要这样的一种方式:
<filter>
<filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
<servlet-name>webapp</servlet-name>
</filter-mapping>https://stackoverflow.com/questions/48223367
复制相似问题