java中URL参数中有中文值,传到服务端,在用request.getParameter()方法,得到的常常会是乱码,这将涉及到字符解码操作。
方法一:
http://xxx.do?ptname=’我是中国人’
在取URL传递中文的页面对字符进行解码:
String strPtname = request.getParameter("ptname");
strPtname = new String(strPtname.getBytes("ISO-885Array-1"), "UTF-8");
这种方式受具体应用环境限制,往往在应用部署环境发生改变时,还会出现中文乱码。
方法二:
URLDecoder和URLEncoder,可以在任何应用部署环境下通用
URLDecoder和URLEncoder它的作用主要是用于普通字符串和application/x-www-form-rulencodedMIME字符串之间的转换。
URLEncoder类包含一个encode(String s,Stringcharcter)静态方法,它可以将普通字符串转换成application/x-www-form-urlencodedMIME字符串
URLDecoder类包含一个decode(String s,Stringcharcter)静态方法,它可以将看上去乱码的特殊字符串转换成普通字符串
编码:URLEncoder(encode("包含中文的串"))
解码:java.net.URLDecoder.decode("需要解码的串","utf-8");
客户端
title=encodeURI(encodeURI("包含中文的串"));
url="<%=request.getContextPath()%>/print/printList!printTable.action?title="+title;
在服务器端用java.net.URLDecoder.decode(getRequest().getParameter("title"),"UTF-8"),进行解码。
URLDecoder和URLEncoder必须成对使用,报异常加try catch可解决。