tomcat url 参数编码的问题
程序员文章站
2024-02-28 23:41:46
...
通常在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 URL
try {
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[0-9a-fA-F]{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("中文"));
推荐阅读
-
tomcat url 参数编码的问题
-
Java找不到或无法加载主类及编码错误问题的解决方案
-
让tomcat使用强制ETag参数解除浏览器对静态文件的缓存
-
关于MySql链接url参数的设置
-
asp.net中url字符串编码乱码的原因与解决方法
-
MySQL slave_net_timeout参数解决的一个集群问题案例
-
Rails中使用REST,登录相关的问题,如何获得当前正在处理的url? 博客分类: Ruby RoR RailsRESTRubyMVCBlog
-
Rails中使用REST,登录相关的问题,如何获得当前正在处理的url? 博客分类: Ruby RoR RailsRESTRubyMVCBlog
-
两个长度限制问题的分析(来源于项目) 博客分类: tomcat/jetty
-
Tomcat服务无法启动的问题的解决方法