我在页面上用的是gbk的编码,并且通过js来往后台发送数据.可是我的数据到后台就变成了???.首先我在js里看到的也是中文啊,但是提交到后台就马上成了???.
想用转编码的也没用,不知道是那里出问题了.我以前是只要在页面设好编码,然后再到后台程序里就可以取到.
具体如下:
<script language="javascript">
function search(){
var searchName = document.getElementById("searchInp").value;
var searchInput = document.getElementById("options").value;
alert(searchName);
alert(searchInput);
window.location.href = "/SmartSSO/log/ListLogAction.shtml?search="+searchName+"&options="+searchInput;
}
</script>
这里看到的都是中文.然后提交到ListLogAction里后,String searchCondition = request.getParameter("options");得到的就是????,即用编码转换也不管用.有什么高招?
想用转编码的也没用,不知道是那里出问题了.我以前是只要在页面设好编码,然后再到后台程序里就可以取到.
具体如下:
<script language="javascript">
function search(){
var searchName = document.getElementById("searchInp").value;
var searchInput = document.getElementById("options").value;
alert(searchName);
alert(searchInput);
window.location.href = "/SmartSSO/log/ListLogAction.shtml?search="+searchName+"&options="+searchInput;
}
</script>
这里看到的都是中文.然后提交到ListLogAction里后,String searchCondition = request.getParameter("options");得到的就是????,即用编码转换也不管用.有什么高招?
可以先用encodeURI()转成URL格式
服务器上用URLDecorder转回来
可以弄一个表单来提交。
服务器上用URLDecorder转回来
这个没怎么看懂,你们是怀疑我这里
window.location.href = "/SmartSSO/log/ListLogAction.shtml?search="+searchName+"&options="+searchInput
如果是中文的话,就存在问题?
window.location.href = "/SmartSSO/log/ListLogAction.shtml?search="+searchName+"&options="+searchInput
如果是中文的话,就存在问题?是的,不能直接再url上用中文原文,必须编码先,但长度还是有限制,不好。
这个相当于get方式提交,是会有问题的,get方式用的是iso-8859-1的编码吧,你必须在此之前先用JS中的一个转码方法转一下。
表单的post方式是可以的
我没说用URL来传信息我说的是,为了忽略不同平台间的编码差异,把传送的中文转换成编码,服务器接收以后再转换回来
比如要传送 "中文"
在JS里先把 "中文"通过URL编码encodeURI()转成"%D6%D0%CE%C4"
发送的时候就是 /service?text=%D6%D0%CE%C4
服务器端接收以后,用java.net.URLDecoder.decode()转回来
这样就避免不同的编码环境造成的字符乱码