首先Java传值问题有两种 post 和 get
1.post的请求中文很好解决 加过滤器 通知修改中文问题
2.get的请求 url 地址首先是以浏览器的字符编码 ie 默认是 utf—8 火狐 默认是 GBK
当以request.getParamter("name");接值的时候 便会以容器 服务器的编码的格式 (tomcat 默认是iso-8859-1)
当所以当解码的时候
String mc=new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8");
即可
如果不受tomcat的影响即是容器 编码两次
java.net.URLEncoder.encode(java.net.URLEncoder.encode(request.getParameter("find"),"UTF-8"))
在后台直接解码
URLDecoder.decode(request.getParameter("find"),"UTF-8")
即可获得前台传值的中文
js编码的话
escape(escape($('#content').val())
后台直接解码
public static String unescape(String src) {
StringBuffer tmp = new StringBuffer();
tmp.ensureCapacity(src.length());
int lastPos = 0, pos = 0;
char ch;
while (lastPos < src.length()) {
pos = src.indexOf("%", lastPos);
if (pos == lastPos) {
if (src.charAt(pos + 1) == 'u') {
ch = (char) Integer.parseInt(src
.substring(pos + 2, pos + 6), 16);
tmp.append(ch);
lastPos = pos + 6;
} else {
ch = (char) Integer.parseInt(src
.substring(pos + 1, pos + 3), 16);
tmp.append(ch);
lastPos = pos + 3;
}
} else {
if (pos == -1) {
tmp.append(src.substring(lastPos));
lastPos = src.length();
} else {
tmp.append(src.substring(lastPos, pos));
lastPos = pos;
}
}
}
return tmp.toString();
}
解码即可