在url中带有中文,如:http://localhost/cnadsys/ad.do?name=用户名;在action中直接使用request.getParameter("name")的时候,这个IE下正常,firefox下面则不行,如果使用转码,那firefox下可以,ie下则不行。造成的原因是tomcat中默认的是iso-8859-1,它已经进行了一次转码,因此这里就存在问题。
解决办法是对“用户名”进行编码,使用URLEncoder.encode(name,"GBK")进行转码,这个在java中进行,因此就不必再页面里写转码的代码了,此时在url中“用户名”则变成了“%D3%C3%BB%A7%C3%FB”。在action中获取的时候使用String name=request.getParameter("name")进行获取,对获取的字符串再进行转码,使用name=new String(name.getBytes("iso-8859-1"),"GBK")进行解码,这样获取的数据则是中文了。
解决办法是对“用户名”进行编码,使用URLEncoder.encode(name,"GBK")进行转码,这个在java中进行,因此就不必再页面里写转码的代码了,此时在url中“用户名”则变成了“%D3%C3%BB%A7%C3%FB”。在action中获取的时候使用String name=request.getParameter("name")进行获取,对获取的字符串再进行转码,使用name=new String(name.getBytes("iso-8859-1"),"GBK")进行解码,这样获取的数据则是中文了。