有没有什么方法可以编码UTF-8的URL中的特殊字符和其他字符,而无需更改tomcat配置

时间:2016-04-23 11:04:30

标签: java jsp tomcat

任何人都可以帮助我: 有没有其他方法可以在java jsp页面中对UTF-8中的特殊字符和其他字符进行编码,而无需更改tomcat配置。

我已经使用URLEncoder.encode()对我的jsp文件和我的应用程序中的url进行编码,但我不想在tomcat配置中进行更改,因为我的服务器一直在运行,我无法阻止它,有没有其他方法我们可以编码网址而不改变tomcat配置...

2 个答案:

答案 0 :(得分:0)

使用java.net.URI代替 HTTP URL Address Encoding in Java 或使用URIBuilder How do I encode URI parameter values? 希望这可以帮助你。

答案 1 :(得分:0)

您错过了在编码中添加UTF-8

使用它

 URLEncoder.encode(stringToBeEncoded, "UTF-8"); 

而不是

URLEncoder.encode();

在你的jsp中,使用page charset到UTF-8。

<%@page contentType="text/html;charset=UTF-8"%>

在您的servlet中,您可以使用它

request.setCharacterEncoding("UTF8");
response.setCharacterEncoding("UTF8");

资源链接:

How to get UTF-8 working in Java webapps?

UPDATE:

使用此链接中的过滤器:

http://tomcat.apache.org/tomcat-8.0-doc/config/filter.html

  

如何在任何地方使用UTF-8?

使用UTF-8作为所有内容的字符编码是一个安全的选择。这应该适用于几乎所有情况。

要完全切换到使用UTF-8,您需要进行以下更改:

  1. 在server.xml中的<Connector>上设置URIEncoding =“UTF-8”。 参考文献:HTTP ConnectorAJP Connector
  2. 使用默认编码设置的character encoding filter 到UTF-8
  3. 更改所有JSP以在其contentType中包含charset名称。 例如,使用<%@page contentType="text/html; charset=UTF-8" %> 对于通常的JSP页面和<jsp:directive.page contentType="text/html; charset=UTF-8" /> 用于XML中的页面 语法(又名JSP文档)。
  4. 更改所有servlet以设置响应的内容类型 在内容类型中包含charset名称为UTF-8。使用 response.setContentType("text/html; charset=UTF-8")response.setCharacterEncoding("UTF-8")

  5. 更改您使用的任何内容生成库(Velocity, Freemarker等)使用UTF-8并在内容中指定UTF-8 他们产生的回应的类型。

  6. 禁用任何可能读取请求参数的阀门或过滤器 在您的字符编码过滤器或jsp页面有机会之前 将编码设置为UTF-8。有关更多信息,请参阅 http://www.mail-archive.com/users@tomcat.apache.org/msg21117.html