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 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("中文"));

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值