setCharacterEncoding方法无法使用iso-8859-15正确编码特殊字符

时间:2017-04-27 14:48:54

标签: java servlets character-encoding

我有简单的表单提交流程,请求在Servlet接收之前抛出过滤器。在我的doFilter方法中,第一行本身是使用 iso-8859-15 设置字符编码,如下所示

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException {
    servletRequest.setCharacterEncoding("iso-8859-15"); //encoding setting

在我的请求对象中,我有一个名为“name”的参数,其值为“1Depósito”(即国际语言特殊字符)。执行 setCharacterEncoding 方法后,参数值将进行修改。参数值编码为“1Depósito”而不是“1Depósito

在我的参数值中,我们有一个特殊字符“ó”(即ASCII代码243),因为它编码不正确但我相信 iso-8859-15 支持“ó”字符,那么为什么编码不正确?

在我的请求标题中,字符集显示为UTF-8

所以在我的过滤器中如果我将编码改为“UTF-8”“iso-8859-15”那么它工作正常但我需要工作使用“iso-8859-15”只是因为相同的代码在我的其他tomcat构建中工作。

注意:

  • 1)迁移到Spring-Boot并在tomcat上运行 - >这里iso-8859-15编码正确应用,即使输入请求字符集是“UTF-8”
  • 2)正常的WebLogic构建 - >在这里,即使输入请求字符集是“UTF-8”,iso-8859-15编码也没有正确应用
  • fiddler 中,我调试了传入的请求,并观察到两个请求(Tomcat& WebLogic)字符集没有区别(即Content-Type:application / x-www-form-urlencoded; charset = UTF-8)

请确认“iso-8859-15”是否支持“ó”字符?如果是,那么为什么编码不起作用?

期待您的宝贵意见。

谢谢, BSK

0 个答案:

没有答案