一个URL参数显示中文乱码问题,请高手指教
页面一:
<script language="JavaScript">
function check() {
var name = "姓名";
document.form1.action="file.jsp?name="+name; //因为程序需要,只能用这种提交方式
document.form1.submit();
}
</script> 提交以后。
页面二:
<%
//request.setCharacterEncoding("GBK");
String name = request.getParameter("name");
//name= new String(name.getBytes("ISO-8859-1"),"GBK");
%>
<%=name%>
页面二显示的name是乱码 ????
请高手们指点指点小弟。。。
问题点数:100、回复次数:13Top
1 楼mylsj()回复于 2005-07-07 10:40:07 得分 0
自己upTop
2 楼zgysc(翠湖寒)回复于 2005-07-07 11:51:23 得分 0
别转码你看看还是不是乱码?
另外你在测试一下用post方式提交,看看,比较一下,就明白了Top
3 楼laughsmile(海边的星空)回复于 2005-07-07 13:10:12 得分 0
页面一:
<%@ page contentType="text/html;charset=GBK" %>
....
页面二:
<%@ page contentType="text/html;charset=GBK" %>
<%
request.setCharacterEncoding("GBK");
String name = request.getParameter("name");
%>
应该就可以了啊Top
4 楼zhangqingqi82(上下而求索……)回复于 2005-07-07 14:41:55 得分 0
用函数java.net.URLDecoder.decodeTop
5 楼mylsj()回复于 2005-07-07 14:52:14 得分 0
用java.net.URLDecoder.decode 要怎么用?
document.form1.action="file.jsp?name="+name; URL在JavaScript中写的,怎么使用URLDecoder呢?
Top
6 楼Harbin_SAKURA(樱)回复于 2005-07-07 14:59:01 得分 0
哎~~
"?"传值,当为中文时非常容易乱码,关注一下Top
7 楼anarki12345(虫子他爹)回复于 2005-07-07 15:11:58 得分 0
在传递参数时,先用java.net.URLDecoder.decode转化一下就可以了
比如:
<script language="JavaScript">
function check() {
<%
String name="姓名";
%>
document.form1.action="file.jsp?name="+<%java.net.URLDecoder.decode(name)%>;
document.form1.submit();
}
</script>
Top
8 楼xz917(xuanzi)回复于 2005-07-07 15:14:44 得分 0
form用post方式,把name= new String(name.getBytes("ISO-8859-1"),"GBK");这句话放开Top
9 楼chuanyuan88(船员-逆水行舟,不进则退!)回复于 2005-07-07 16:47:32 得分 0
你在浏览器中 传参数的时候不要直接传汉字,要先对其进行Encode编码,我用java的方法实现如下:你可以用自己写javascript的encode函数。
1.jsp:
<%@ page contentType="text/html;charset=gb2312"%>
<script language="JavaScript">
<!--
function check() {
var name = "<%=java.net.URLEncoder.encode("姓名")%>";
document.form1.action="test.jsp?name="+name; //因为程序需要,只能用这种提交方式
document.form1.submit();}
}-->
</script>
<form name="form1" method=post>
<input value="提交" type=button onclick="javascript:check();">
</form>
test.jsp:
<%@ page contentType="text/html;charset=gb2312"%>
<%
request.setCharacterEncoding("gb2312");
String name = request.getParameter("name");
%>
<%=name%>
Top
10 楼laughsmile(海边的星空)回复于 2005-07-07 21:29:23 得分 0
如果你不想传递明文:
页面一:
<%@ page contentType="text/html;charset=GBK" %>
....
document.form1.action="test.jsp?name="+"<%=java.net.URLEncoder.encode("姓名")%>";
....
页面二:
<%@ page contentType="text/html;charset=GBK" %>
<%
request.setCharacterEncoding("GBK");
String name = request.getParameter("name");
%>
Top
11 楼hygx(失身志不移)(http://91in.blogchina.com)回复于 2005-07-08 00:56:00 得分 0
gzTop
12 楼Goal3(拼命三郎)回复于 2005-07-08 08:25:59 得分 0
name= new String(name.getBytes("ISO-8859-1"),"GBK");
转换一下, 尽量不要在地址栏上传递中文参数,可以用post方式Top
13 楼mylsj()回复于 2005-07-17 13:57:31 得分 0
这个问题到现在也没解决的了,我使用的是最笨的方法,用流来取得页面全部的值,然后在分解!
各位高手们有其他的简便方法吗?
<script language="JavaScript">
function check() {
var name = form1.name.value;
document.form1.action="file.jsp?name="+name; //因为程序需要,只能用这种提交方式
document.form1.submit();
}
</script>Top




