为什么我在js 用url 向action传中文参数的时候 在action 用request.getParameter() 接受的时候 显示的是乱码?
我js 代码如下:
function goBut()
{
var sys =document.getElementById("select1").value;
var tab =document.getElementById("select2").value;
alert(sys);
alert(tab);
window.location.href="fieldDefine.do?method=findAllFieldDefineByTable&sysname="+sys+"&tablename="+encodeURIComponent(tab);
}弹出来的都有值, 就是tab里面的值是中文 传过去就是乱码。 我用encodeURIComponent(),escape(), 和在action里面用java.net.URLEncoder.encode(tab, "utf-8");解码 都没用,请高手解决...
我js 代码如下:
function goBut()
{
var sys =document.getElementById("select1").value;
var tab =document.getElementById("select2").value;
alert(sys);
alert(tab);
window.location.href="fieldDefine.do?method=findAllFieldDefineByTable&sysname="+sys+"&tablename="+encodeURIComponent(tab);
}弹出来的都有值, 就是tab里面的值是中文 传过去就是乱码。 我用encodeURIComponent(),escape(), 和在action里面用java.net.URLEncoder.encode(tab, "utf-8");解码 都没用,请高手解决...
也有可能 GBK 和 ISO8859-1 对调,记不清了
又看了LZ的代码,解密是 java.net.URLDecoder.decode
不是 encode
页面中获取的时候用request.setsetCharacterEncoding("utf-8")
页面中属性页设下pageEncoding="utf-8"
试下看有没有效果
然后在action中使用
URLDecoder.decode(tablename,"utf-8");可以将中文的值进行转码。
tab = encodeURI(encodeURI(tab))tab = encodeURI(encodeURI(tab))
java.net.URLEncoder.encode(tab, "utf-8 ")
说句实话 有中文我一定不用url传参.反而是用 hidden取代
String s=request.getParameter("tablename");
s=new String(s.getBytes("iso-8859-1"),"utf-8");
这个s就是你客户端传过来的中文
你去tomcat安装目录下搜索server.xml文件。
接着搜索8080端口。在<Connector/>其中加上一句:URIEncoding="UTF-8"
另外你把便把统统改成一致的,UTF-8
url = encodeURI(url);
url = encodeURI(url); //注:转两遍java
String name = request.getParameter("name");
name = java.net.URLDecoder.decode(name, "utf-8");