WAP上链接传递中文参数接收时乱码问题 解决就放分
这是A页的链接代码:
list.setRowTmpt("<b>[$]. <a href=/"ring_makering.jsp?id=[id]&name=中文/">[name]</a></b>");
setRowTmpt方法是设置这个链接的模版,显示在页面上的效果就是<a href="ring_makering.jsp?id=5&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]&name=UrlEncoder(中文)>[name]</a>
或者
2、<a href=ring_makering.jsp?id=[id]&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方式
---
这个是没问题的