Java UtF-8格式在tomcat服务器的servlet中不起作用
我有一个Javaservlet,它通过ajax javascript从HTML接收数据。Html从用户处接收印地语文本,并通过ajax将其发送到servlet中。我到处都指定了UTF-8格式,但它不起作用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
<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>