日期:2014-05-17  浏览次数:20959 次

request.getParameter会丢失一些符号的问题。
http://www.../download.jsp?orgcode=10000289&year=2012&month=3&productcode=140017596&productname=OP-MTH3243/SC/砂镍-天花灯-D类&row1=1&row2=1&jsp=InventoryDataSummary

右键菜单地址可以看到上面的地址,其中的productname产品名称已经正确穿过来来了,但是我在JSP的requset取得后out打印却变成了:

String productname=(String)request.getParameter("productname");
out.println(productname);
结果是:OP-MTH3243/SC/砂镍-天花D' 少了一些汉字和符号。而且我发现如果productname中有英文小括号的话,也会直接被丢失了,服务器是linux的。

------解决方案--------------------
你的地址是直接字符串组装的?

请用 URLEncoder对“productname=OP-MTH3243/SC/砂镍-天花灯-D类”中,等号后面的内容进行 encode()
------解决方案--------------------
这个是传输的问题你的值如果有一些特殊字符和中文字符的时候会出现这个问题,一般情况是吧参数进行编码使用js的escape,encodeURI,encodeURIComponent这个3个函数,不过我一半 用encodeURIComponent效果比较好,然后在获取值的时候用java.net.URLDecoder的decode(String s, String enc)解码
例如:
productName=encodeURIComponent(OP-MTH3243/SC/砂镍-天花灯-D类);
url = "...&productname=" + productName + "...";

后台:
String productname = request.getParameter("productname");
productname = java.net.URLDecoder.decode(productname, "UTF-8");