我在页面上用的是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");得到的就是????,即用编码转换也不管用.有什么高招?

解决方案 »

  1.   

    如果为了平台通用性的话
    可以先用encodeURI()转成URL格式
    服务器上用URLDecorder转回来
      

  2.   

    极其不建议通过URL来传递中文信息,
    可以弄一个表单来提交。
      

  3.   

    可以先用encodeURI()转成URL格式 
    服务器上用URLDecorder转回来
    这个没怎么看懂,你们是怀疑我这里
    window.location.href   =   "/SmartSSO/log/ListLogAction.shtml?search="+searchName+"&options="+searchInput
    如果是中文的话,就存在问题?
      

  4.   

    建议在表单里设置一些HIDDEN字段,提交时用JS把要提交的值赋予这些HIDDEN字段再用ACTION接收,因为他们提交的方式不同,表单提交是POST,而一般URL提交是用GET提交
      

  5.   

    这个没怎么看懂,你们是怀疑我这里 
    window.location.href       =       "/SmartSSO/log/ListLogAction.shtml?search="+searchName+"&options="+searchInput 
    如果是中文的话,就存在问题?是的,不能直接再url上用中文原文,必须编码先,但长度还是有限制,不好。
      

  6.   

    "window.location.href = "/SmartSSO/log/ListLogAction.shtml?search="+searchName+"&options="+searchInput"
    这个相当于get方式提交,是会有问题的,get方式用的是iso-8859-1的编码吧,你必须在此之前先用JS中的一个转码方法转一下。
    表单的post方式是可以的
      

  7.   

    汗死...
    我没说用URL来传信息我说的是,为了忽略不同平台间的编码差异,把传送的中文转换成编码,服务器接收以后再转换回来
    比如要传送 "中文"
    在JS里先把 "中文"通过URL编码encodeURI()转成"%D6%D0%CE%C4"
    发送的时候就是 /service?text=%D6%D0%CE%C4
    服务器端接收以后,用java.net.URLDecoder.decode()转回来
    这样就避免不同的编码环境造成的字符乱码
      

  8.   

    同意楼上的说法,用URL直接传中文,楼上说的是比较通用的做法,而且可以保证跨浏览器运行。