3000pzj 发表于 2013-2-6 09:56:53

tomcat url 参数编码的问题

 通常在URL大家会传中文参数到服务器 在服务器接收是乱码 通常最简单的解决方法是通过转成utf-8+escape形式 %E4%B8%AD%E6%96%87 google也是采用此方法
这样的方法最简单最快速.让tomcat接受这样参数是不需要手动转码的,tomcat自动会识别,当在request得到参数的时候就是中文.

先说说配置的方法.

找到tomcat server.xml 查找Connector关键字,加上URIEncoding="UTF-8"就可以了.
下边在说说如果转成utf-8+escape形式.

1.jsp情况下可以使用如下.
www.x.com/sub.jsp?name=<%=com.liferay.util.JS.encodeURIComponent("中文")%>com.liferay.util.JS这个包自己下,我也忘记了.自己写一个也可以.
 
这里提供一下源代码
 
public static final String ENCODING = "UTF-8";   public static String encodeURIComponent(String s) {return encodeURIComponent(s, ENCODING);}public static String encodeURIComponent(String s, String encoding) {// Encode URLtry {    s = URLEncoder.encode(s, encoding);} catch (Exception e) {}s = s.replaceAll("\\+","%20");s = s.replaceAll("%2B","+");return s;}public static String decodeURIComponent(String s) {return decodeURIComponent(s, ENCODING);}public static String decodeURIComponent(String s, String encoding) {s = s.replaceAll("%u{4}", "");s = s.replaceAll("\\+","%2B");s = s.replaceAll("%20","+");try {    s = URLDecoder.decode(s, encoding);} catch (Exception e) {}return s;} 
 
2.javascript情况下,这种更加简单.
 
alert("www.x.com/sub.jsp?name="+encodeURIComponent("中文")); 
 
页: [1]
查看完整版本: tomcat url 参数编码的问题