Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用RequestDispatcher.include()时JSP中的Spring编码问题_Java_Spring_Jsp_Encoding - Fatal编程技术网

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
    强制编码
    真的
    
  • 我采用了第二种方法。我不确定这是否有任何意外的副作用,但目前看来效果不错