Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.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
Tomcat 7 org.apache.catalina.filters.AddDefaultCharsetFilter未使用UTF-8_Tomcat_Servlets_Character Encoding - Fatal编程技术网

Tomcat 7 org.apache.catalina.filters.AddDefaultCharsetFilter未使用UTF-8

Tomcat 7 org.apache.catalina.filters.AddDefaultCharsetFilter未使用UTF-8,tomcat,servlets,character-encoding,Tomcat,Servlets,Character Encoding,我有一个Tomcat 7网络应用程序,我的角色集有问题。我的目标是把所有的东西都塞进UTF-8,然后就这么做吧。事实上,我感到惊讶的是,在2014年,并不是所有东西都默认UTF-8 我阅读了文档,并在系统的默认web.xml中取消了对org.apache.catalina.filters.AddDefaultCharsetFilter过滤器的注释 /etc/tomcat/web.xml: <filter> <filter-name>setCharacterEnco

我有一个Tomcat 7网络应用程序,我的角色集有问题。我的目标是把所有的东西都塞进UTF-8,然后就这么做吧。事实上,我感到惊讶的是,在2014年,并不是所有东西都默认UTF-8

我阅读了文档,并在系统的默认web.xml中取消了对
org.apache.catalina.filters.AddDefaultCharsetFilter
过滤器的注释

/etc/tomcat/web.xml:

<filter>
    <filter-name>setCharacterEncodingFilter</filter-name>
    <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <async-supported>true</async-supported>
</filter>

<filter-mapping>
    <filter-name>setCharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
这样做(以及其他一些东西,比如jdbc参数)似乎可以将请求导入UTF-8。但是我如何强制对UTF-8做出响应呢

i、 e

收益率:

Req: UTF-8
Resp: ISO-8859-1

谢谢

我以前没有仔细阅读你的问题。由于HTTP标准,默认响应编码为ISO-8859-1。如果您想更改它,您必须自己设置响应的编码


您真正应该做的是阅读Tomcat常见问题解答,其中有一个条目可以回答您提出的确切问题:

看起来您正在谈论两个不同的过滤器:

  • AddDefaultCharsetFilter(适用于响应
  • 设置字符编码过滤器(适用于请求
在您的情况下,您希望使用AddDefaultCharsetFilter,如下所述:


客户端是否发送带有
字符集
参数的
内容类型
?Tomcat不会覆盖客户端的设置。客户端是指浏览器吗?那不是请求的一部分吗?这是不起作用的反应。此外,应用程序中的每个页面都以
开头。在web.xml中启用过滤器确实解决了我的字符失真问题。我只是觉得奇怪,它没有推出UTF-8。。。
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    System.out.printf("Req: %s\n", req.getCharacterEncoding());
    System.out.printf("Resp: %s\n", resp.getCharacterEncoding());
Req: UTF-8
Resp: ISO-8859-1