Java 使用RequestDispatcher.include()时JSP中的Spring编码问题
在我的应用程序中,有一组消息包作为属性文件。通过Java 使用RequestDispatcher.include()时JSP中的Spring编码问题,java,spring,jsp,encoding,Java,Spring,Jsp,Encoding,在我的应用程序中,有一组消息包作为属性文件。通过在JSP文件中查找消息。这将起作用,所有特殊字符都将在浏览器中按应有的方式呈现 现在,我需要在其中一个JSP文件中添加一些额外的逻辑,并在其位置添加一个servlet,该servlet执行其任务并使用req.getRequestDispatcher(“/JSP/some_file.JSP”).include(req,resp) 这主要是有效的,但现在所有的特殊字符(在我的例子中是德语umlauts)都被破坏了。由于某些原因,来自消息标记的UMLAU
在JSP文件中查找消息。这将起作用,所有特殊字符都将在浏览器中按应有的方式呈现
现在,我需要在其中一个JSP文件中添加一些额外的逻辑,并在其位置添加一个servlet,该servlet执行其任务并使用req.getRequestDispatcher(“/JSP/some_file.JSP”).include(req,resp)代码>
这主要是有效的,但现在所有的特殊字符(在我的例子中是德语umlauts)都被破坏了。由于某些原因,来自消息标记的UMLAUT呈现不正确。举个例子,“ungültig”一词的意思是
00000000 75 6e 67 ef bf bd 6c 74 69 67 0a |ung...ltig.|
在浏览器中。我知道这是一个问题,但我不知道为什么它会在那里
资源文件都有正确的编码,事实上,为了安全起见,我们的资源文件都是ASCII,“ungültig”实际上编码为ung\u00FCltig
,根据定义,这是Java属性文件所需的编码
我不知道为什么会这样。为什么它突然呈现不正确?我如何修复它?解决方案是,由于我不知道的某些原因,在使用请求调度程序时忽略了有关JSP头中编码的指令
修复此问题有两个选项:
使用和setCharacterEncoding(“UTF-8”)
在servlet中显式设置编码
将Spring的CharacterEncoding过滤器的forceEncoding
参数值设置为true,例如
<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>
编码过滤器
org.springframework.web.filter.CharacterEncodingFilter
编码
UTF-8
强制编码
真的
我采用了第二种方法。我不确定这是否有任何意外的副作用,但目前看来效果不错