WAP上链接传递中文参数接收时乱码问题 解决就放分

来源:互联网 发布:mac pdf 签名 编辑:程序博客网 时间:2024/05/16 05:51

WAP上链接传递中文参数接收时乱码问题 解决就放分

楼主happyxyzw(happyxyzw)2005-01-12 11:58:00 在 移动平台 / 开发应用 提问

这是A页的链接代码:  
    list.setRowTmpt("<b>[$].   <a   href=/"ring_makering.jsp?id=[id]&amp;name=中文/">[name]</a></b>");  
  setRowTmpt方法是设置这个链接的模版,显示在页面上的效果就是<a   href="ring_makering.jsp?id=5&amp;name=中文连接">中文连接</a>  
  A页头部设置字符类型:  
  <%@   page   contentType=   "text/vnd.wap.wml;   charset=gb2312"%>  
  <?xml   version="1.0"   encoding="utf-8"?>  
  <!DOCTYPE   wml   PUBLIC   "-//WAPFORUM//DTD   WML   1.3//EN"   "http://www.wapforum.org/DTD/wml13.dtd/">  
  B接收页面头部:  
  <%@   page   contentType=   "text/vnd.wap.wml;   charset=gb2312"%>  
  <?xml   version="1.0"   encoding="UTF-8"?>  
  <!DOCTYPE   wml   PUBLIC   "-//WAPFORUM//DTD   WML   1.3//EN"   "http://www.wapforum.org/DTD/wml13.dtd/">  
  B页接收:  
  我用了下面的方法来取参数,并输出,看到底哪个能正确转码,但是结果是任何一种都不能正常转码,显示的都是乱码;  
  String   str   =request.getParameter("name");  
  String   sa[]   ={"ASCII",   "ISO8859-1",   "GBK",   "gb2312",   "UTF-8",   "Unicode"};  
  for(   int   i   =   0;   i   <   sa.length;   i++   )  
  {  
  System.out.println(   "sMessage["   +   sa[i]   +   "]   =   "   +   new   String(   str.getBytes(   sa[i]   )   )   );  
  System.out.println(   "sMessage["   +   sa[i]   +   "]   =   "   +   new   String(   str.getBytes(),   sa[i]   )   );  
  for(   int   j   =   0;   j   <   sa.length;   j++   )  
  {  
  System.out.println(   "sMessage["   +   sa[i]   +   "]["   +   sa[j]   +   "]   =   "   +   new   String(str.getBytes(sa[i]   ),   sa[j]   )   );  
  }  
  }  
   
   
  这里是后台输出的结果:  
  sMessage[ASCII]   =   ??????  
  sMessage[ASCII]   =   ??????  
  sMessage[ASCII][ASCII]   =   ??????  
  sMessage[ASCII][ISO8859-1]   =   ??????  
  sMessage[ASCII][GBK]   =   ??????  
  sMessage[ASCII][gb2312]   =   ??????  
  sMessage[ASCII][UTF-8]   =   ??????  
  sMessage[ASCII][Unicode]   =  
  sMessage[ISO8859-1]   =   ??????  
  sMessage[ISO8859-1]   =   ??????  
  sMessage[ISO8859-1][ASCII]   =   ??????  
  sMessage[ISO8859-1][ISO8859-1]   =   ??????  
  sMessage[ISO8859-1][GBK]   =   ??????  
  sMessage[ISO8859-1][gb2312]   =   ??????  
  sMessage[ISO8859-1][UTF-8]   =   ??????  
  sMessage[ISO8859-1][Unicode]   =  
  sMessage[GBK]   =   ??????  
  sMessage[GBK]   =   ??????  
  sMessage[GBK][ASCII]   =   ??????  
  sMessage[GBK][ISO8859-1]   =   ??????  
  sMessage[GBK][GBK]   =   ??????  
  sMessage[GBK][gb2312]   =   ??????  
  sMessage[GBK][UTF-8]   =   ??????  
  sMessage[GBK][Unicode]   =  
  sMessage[gb2312]   =   ??????  
  sMessage[gb2312]   =   ??????  
  sMessage[gb2312][ASCII]   =   ??????  
  sMessage[gb2312][ISO8859-1]   =   ??????  
  sMessage[gb2312][GBK]   =   ??????  
  sMessage[gb2312][gb2312]   =   ??????  
  sMessage[gb2312][UTF-8]   =   ??????  
  sMessage[gb2312][Unicode]   =  
  sMessage[UTF-8]   =   ??????  
  sMessage[UTF-8]   =   ??????  
  sMessage[UTF-8][ASCII]   =   ??????  
  sMessage[UTF-8][ISO8859-1]   =   ??????  
  sMessage[UTF-8][GBK]   =   ??????  
  sMessage[UTF-8][gb2312]   =   ??????  
  sMessage[UTF-8][UTF-8]   =   ??????  
  sMessage[UTF-8][Unicode]   =  
  sMessage[Unicode]   =   ???  
   
   
  求各位能给出正确的转码方式,另外如上代码我在CCWAP模拟器上运行成功不乱码,我用手机就乱码。在线等!给分100不够可加。  
  问题点数:100、回复次数:11Top

1 楼gary_shi(Gary Shi)回复于 2005-01-12 14:11:50 得分 0

中文的URL用UrlEncoder编一下,  
   
  传上来,再decoder一下Top

2 楼happyxyzw(happyxyzw)回复于 2005-01-12 14:23:21 得分 0

如何编?能给个例子吗?Top

3 楼mzqali1(梦网无限)回复于 2005-01-12 19:19:15 得分 50

A页头部设置字符类型:  
  <%@   page   contentType=   "text/vnd.wap.wml;   charset=UTF-8"%>  
  <?xml   version="1.0"   encoding="utf-8"?>  
  <!DOCTYPE   wml   PUBLIC   "-//WAPFORUM//DTD   WML   1.3//EN"   "http://www.wapforum.org/DTD/wml13.dtd/">  
  B接收页面头部:  
  <%@   page   contentType=   "text/vnd.wap.wml;   charset=UTF-8"%>  
  <%request.setCharacterEncoding("UTF-8");%>  
  <?xml   version="1.0"   encoding="UTF-8"?>  
  <!DOCTYPE   wml   PUBLIC   "-//WAPFORUM//DTD   WML   1.3//EN"   "http://www.wapforum.org/DTD/wml13.dtd/">  
   
  然后将A页和B页分别用editplus或者ultraedit保存为UTF-8格式的文件  
  Top

4 楼cuihao(java_豆)回复于 2005-01-12 22:15:58 得分 0

把要传递的中文       m   =   java.net.URLDecoder.decode("中文");  
   
        接受页面再             java.net.URLEncoder.encode(m);Top

5 楼heibai520(Crazy Java)回复于 2005-01-12 22:43:21 得分 0

如果你是TOMCAT服务器的话可以直接要TOMCAT那里设置一下!Top

6 楼javavip(☆★☆★☆★)回复于 2005-01-13 09:05:46 得分 50

1、<a   href=ring_makering.jsp?id=[id]&amp;name=UrlEncoder(中文)>[name]</a>  
  或者  
  2、<a   href=ring_makering.jsp?id=[id]&amp;name=UTF8转换(中文)>[name]</a>Top

7 楼happyxyzw(happyxyzw)回复于 2005-01-13 09:19:14 得分 0

UPTop

8 楼winkyTan(胖子)回复于 2005-01-17 17:26:40 得分 0

我现在也遇到差不多的一个问题,请楼主解决后给我,发一份解决方法,   winky.tan@163.comTop

9 楼801190629(执子之手)回复于 2005-01-17 22:15:15 得分 0

不能直接传中文,把中文参数做一下编码.Top

10 楼jiminer(feel)回复于 2005-01-18 16:02:45 得分 0

可以用anchor元素,用post方式Top

11 楼wangzhanlili(小木头)回复于 2005-02-02 10:48:48 得分 0

可以用anchor元素,用post方式  
  ---  
  这个是没问题的