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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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 UtF-8格式在tomcat服务器的servlet中不起作用_Java_Ajax_Tomcat_Servlets_Utf 8 - Fatal编程技术网

Java UtF-8格式在tomcat服务器的servlet中不起作用

Java UtF-8格式在tomcat服务器的servlet中不起作用,java,ajax,tomcat,servlets,utf-8,Java,Ajax,Tomcat,Servlets,Utf 8,我有一个Javaservlet,它通过ajax javascript从HTML接收数据。Html从用户处接收印地语文本,并通过ajax将其发送到servlet中。我到处都指定了UTF-8格式,但它不起作用 <filter-mapping> <filter-name>CharsetFilter</filter-name> <url-pattern>/*</url-pattern> </filter-m

我有一个Javaservlet,它通过ajax javascript从HTML接收数据。Html从用户处接收印地语文本,并通过ajax将其发送到servlet中。我到处都指定了UTF-8格式,但它不起作用

<filter-mapping>
        <filter-name>CharsetFilter</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>
我已经将请求和响应编码设置为utf-8,仍然不工作。 服务器是Tomcat

<filter-mapping>
        <filter-name>CharsetFilter</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>

如果有人能帮忙的话

按照以下步骤配置Tomcat,使其能够正确地为UTF-8页面服务,可以是波斯语、阿拉伯语,也可以是从右向左书写的任何语言:

<filter-mapping>
        <filter-name>CharsetFilter</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>
(1) 编辑server.xml,如下所示

<filter-mapping>
        <filter-name>CharsetFilter</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>

<filter-mapping>
        <filter-name>CharsetFilter</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>
2) CharsetFilter强制JavaWebApp以UTF-8编码方式处理所有请求和响应。这要求我们定义一个字符集过滤器,如下所示:

<filter-mapping>
        <filter-name>CharsetFilter</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>
包charsetFilter.classes

 import java.io.IOException;
 import javax.servlet.Filter;
 import javax.servlet.FilterChain;
 import javax.servlet.FilterConfig;
 import javax.servlet.ServletException;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;

public class CharsetFilter implements Filter{
    private String encoding;

    public void init(FilterConfig config) throws ServletException{
            encoding = config.getInitParameter("requestEncoding");
            if( encoding==null ) encoding="UTF-8";
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain       next)
    throws IOException, ServletException{           
            if(null == request.getCharacterEncoding())
            request.setCharacterEncoding(encoding);             
        response.setContentType("text/html; charset=UTF-8");
        response.setCharacterEncoding("UTF-8");
            next.doFilter(request, response);
    }

        public void destroy(){}
}   
<filter-mapping>
        <filter-name>CharsetFilter</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>
此筛选器确保如果浏览器未设置请求中使用的编码,则将其设置为UTF-8。这个过滤器所做的另一件事是设置默认的响应编码,即返回的html/任何内容的编码。另一种方法是在应用程序的每个控制器中设置响应编码等

<filter-mapping>
        <filter-name>CharsetFilter</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>
3) 然后将此筛选器添加到web.xml,如下所示:

<filter-mapping>
        <filter-name>CharsetFilter</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>
字符集过滤器 charsetFilter.classes.charsetFilter 请求编码 UTF-8

<filter-mapping>
        <filter-name>CharsetFilter</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>
并使用希望在servlet中使用的任何语言

<filter-mapping>
        <filter-name>CharsetFilter</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>
您可以使用此选项获取参数:

<filter-mapping>
        <filter-name>CharsetFilter</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>
字符串输入=新字符串(request.getParameter(“foo”).getBytes(“iso-8859-1”),“utf-8”)

<filter-mapping>
        <filter-name>CharsetFilter</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>

干杯

分享您的代码和请求-响应。仅供参考,tomcat没有这样的限制。我有一个简单的java servlet,请求和响应设置为UTF-8格式。您如何测试它?为什么您认为响应不是UTF-8格式?我从html获取servlet中的文本,并启动sql查询从数据库中获取数据。来自dtabase的数据为空,因为其中的文本不是印地语,因此sql“like”查询不起作用。看起来您也需要在连接字符串中指定UTF-8,请参阅我的答案,这只是猜测,因为您没有共享代码。我的答案有用吗?
<filter-mapping>
        <filter-name>CharsetFilter</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>