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

标签 java ajax tomcat servlets utf-8

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

我已将请求和响应编码设置为 utf-8 ,但仍然无法正常工作。 服务器是Tomcat。

如果有人能帮忙。

最佳答案

按照以下步骤配置您的 Tomcat 以正确地提供您的 UTF-8 页面,无论是波斯语、阿拉伯语还是任何从右到左书写的语言:

(1) 按如下方式编辑您的 server.xml

2) CharsetFilter 强制 java webapp 以 UTF-8 编码处理所有请求和响应。这需要我们定义一个字符集过滤器,如下所示:

包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(){}
}   

此过滤器确保如果浏览器未设置请求中使用的编码,则将其设置为 UTF-8。这个过滤器做的另一件事是设置默认响应编码,即。返回的 html/无论是什么的编码。另一种方法是在应用程序的每个 Controller 中设置响应编码等。

3) 然后将此过滤器添加到 web.xml 中,例如:

字符集过滤器 charsetFilter.classes.CharsetFilter 请求编码 UTF-8编码

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

然后将您的 servlet 编写为:

request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");

并在您的 servlet 中使用您想要使用的任何语言。

您可以使用它来获取参数:

String input = new String(request.getParameter("foo").getBytes("iso-8859-1"), "utf-8");

干杯!

关于java - UtF-8 格式在 tomcat 服务器的 servlet 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34326993/

相关文章:

java - 如果 Swing View 是由 Controller 中的新线程设置的,那么它是否需要同步方法

javascript - jQuery AJAX get请求无法正常工作且返回值无法在控制台显示

javascript - 如何在页面加载前提交 ajax 请求

java - 我的项目层次结构中的 spring 依赖项

ruby-on-rails - 使用回形针上传大文件时JVM报错

java - Maven JavaDoc 两次列出类

java - 如何从 Eclipse 在 Tomcat 7 上运行没有 "A child container failed during start"错误的 Web 应用程序?

Apache 服务突然宕机

java - hibernate 错误:- Error during managed flush [Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1]

javascript - php 中的 Json_encode 并在 jquery 中检索它