我在Windows操作系统上。 使用tomcat 8。 IDE - Netbeans 8。 JDK1.8.0_05
我正在尝试为某些servlet指定希伯来语url模式。
(我已经通过设置Urlpattern
注释的@webservlet
属性并放入web.xml
文件来尝试了这两种方法。
希伯来语映射不起作用。 我检查Tomcat运行时的映射是什么样的(通过使用JConsole的MBeans选项卡),希伯来语url显示为乱码(特别是问号)。
我试过了:
SetCharacterEncodingFilter
)有关如何使用tomcat,netbeans,java,windows setup映射到希伯来语(UTF-8)网址的任何建议?
感谢。
答案 0 :(得分:0)
您需要配置应用程序服务器以在utf-8中编码请求参数。由于您使用的是Tomcat,因此可以在conf / server.xml文件中设置URIEncoding="UTF-8"
。这是它应该是什么样子:
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
.......
URIEncoding="UTF-8"
/>
答案 1 :(得分:-1)
请按照以下步骤操作:
编写一个Charset过滤器,用于控制所有请求和响应:
参考:https://github.com/edendramis/freemarker-example/blob/master/src/main/java/com/edendramis/config/CharsetFilter.java
if(amendments == '1') {
...
} else if (amendments == '2') {
...
}
将此过滤器添加到web.xml
package 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{
// Respect the client-specified character encoding
// (see HTTP specification section 3.4.1)
if(null == request.getCharacterEncoding())
request.setCharacterEncoding(encoding);
/**
* Set the default response content type and encoding
*/
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
next.doFilter(request, response);
}
public void destroy(){}
}`
写一些HTML代码,例如:
<filter>
<filter-name>CharsetFilter</filter-name>
<filter-class>charsetFilter.classes.CharsetFilter</filter-class>
<init-param>
<param-name>requestEncoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharsetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在servlet中使用以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fi">
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
获取字符串:
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
对于网址:
String input = new String(request.getParameter("foo").getBytes("iso-8859-1"), "utf-8");
String input = URLDecoder.decode(request.getParameter("keyWord"), "UTF-8");
System.out.println(input);
干杯!!