Java 将servlet映射到希伯来语(UTF-8)URL模式

Java 将servlet映射到希伯来语(UTF-8)URL模式,java,tomcat,servlets,netbeans,utf-8,Java,Tomcat,Servlets,Netbeans,Utf 8,我使用的是windows操作系统。 使用Tomcat8。 IDE-netbeans8。 JDK1.8.0_05 我试图为某些servlet指定希伯来文url模式。 (我通过设置@webservlet注释的Urlpattern属性和放置在web.xml文件中进行了尝试) 希伯来语地图不起作用。 我检查Tomcat运行时映射的外观(通过使用JConsole的MBeans选项卡),希伯来语url显示为乱码(特别是问号) 我试过: 将-J-Dfile.encoding=UTF-8添加到netbeans

我使用的是windows操作系统。 使用Tomcat8。 IDE-netbeans8。 JDK1.8.0_05

我试图为某些servlet指定希伯来文url模式。 (我通过设置
@webservlet
注释的
Urlpattern
属性和放置在
web.xml
文件中进行了尝试)

希伯来语地图不起作用。 我检查Tomcat运行时映射的外观(通过使用JConsole的MBeans选项卡),希伯来语url显示为乱码(特别是问号)

我试过:

  • 将-J-Dfile.encoding=UTF-8添加到netbeans.conf文件中
  • 将windows区域设置更改为希伯来语
  • 在模式中使用url的url编码版本(这在JConsole中也显示为胡言乱语符号)
  • 还尝试以编码形式将URL输入地址栏(例如:localhost:8080/test/%D7%A2%D7%91)
  • 检查了记事本中Servlet文件的编码,它们保存为UTF-8(在进行本列表中描述的第一次更改之后)
  • 我在所有url模式上都有一个过滤器(即:“/*”),它将请求的字符编码设置为UTF-8(还尝试了Apache的
    SetCharacterEncodingFilter
关于如何使用tomcat、netbeans、java和windows设置映射到希伯来语(UTF-8)url,有什么建议吗

谢谢。

按照以下步骤操作:

  • 编写控制所有请求和响应的字符集筛选器:
    参考资料:

  • 将此筛选器添加到web.xml

     <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>
    
  • 用于获取字符串:
    String输入=新字符串(request.getParameter(“foo”).getBytes(“iso-8859-1”),“utf-8”);
    字符串输入=URLDecover.decode(request.getParameter(“关键字”),“UTF-8”);
    系统输出打印项次(输入)

  • 对于URL:

    String str = "$ome UTF-8 text £900";
    String url = "http://your-domain.com/url?p=" + URLEncoder.encode(str, "UTF-8");
    

    干杯

    您需要配置应用程序服务器,以utf-8编码请求参数。因为您使用的是Tomcat,所以在conf/server.xml文件中设置
    URIEncoding=“UTF-8”
    。下面是它的外观:

    <Connector port="8080" maxHttpHeaderSize="8192"
     maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
     .......
     URIEncoding="UTF-8"
    />
    
    
    
    试着配置tomcat以理解UTF8(我想是Defautl charset=ISO-8859-1),你也可以试着为tomcat配置JVM。在startup.batURIEncoding中设置-J-Dfile.encoding=UTF-8在tomcat 8中默认为UTF-8如果服务器配置为“严格遵守servlet”,则连接器的URIEncoding属性的默认值为“ISO-8859-1”,与旧版本的tomcat相同。我猜情况并非如此。您可能仍然希望确保org.apache.catalina.STRICT\u SERVLET\u COMPLIANCE system属性未设置为true。我还尝试过(我已经设置了一个)设置一个过滤器来设置
    HttpServletRequest
    的字符编码。其余的都是用于显示内容的字符编码。不不是URL。我的UTF-8内容显示良好(包括查询字符串)。您尝试过URLEncoding.encode吗?我已经更新了我的答案,你正在对参数进行编码。我对参数没有问题。我对url本身有一个问题,特别是servlet路径。@BalusC您现在错了。我从未剽窃过任何帖子的答案。睁大眼睛检查我的答案和你提到的答案。
    String str = "$ome UTF-8 text £900";
    String url = "http://your-domain.com/url?p=" + URLEncoder.encode(str, "UTF-8");
    
    <Connector port="8080" maxHttpHeaderSize="8192"
     maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
     .......
     URIEncoding="UTF-8"
    />