请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 31930|回复: 38

WAP中文字符传递ASP,PHP解决方案[添asp解决源码] [复制链接]

yytcpt 楼主

太极无影

荣誉管理 手机认证 

帖子
1310
体力
9061
威望
15
发表于 2004-11-1 14:52:00 |显示全部楼层
WAP中,中文字符传递的解决方案


(Add by 2005-03-04)很多朋友问到ASP下面表单提交的问题,现给出源码下载,和实例,希望能给大家参考。

注:主要是表单提交时候,是否采用:e  , :n ,和默认这集中形式<a>默认是:e,<anchor>默认是:n

测试地址:下载源码到本机测试
用opera,或M3GATE点击测试

源码下载:点击下载
【不能下载时PM通知我】


更好的解决方案:http://bbs.blueidea.com/viewthread.php?tid=2055033


制作WAP站点,你可以采用任何后台程序来相结合,ASP、ASP.NET、PHP、JSP等。
就我个人而言,我只试过ASP和PHP下的解决方案,经过测试,给出ASP、PHP下的解决方案。

ASP中的问题参考下图:



上图中所所,如果文件采用UTF-8格式存储,字符编码设置为encoding="UTF-8",则会出现:采用A,GET方式提交的时候,有奇偶字符问题,也就是说提交偶数个字符没有问题,提交奇数个字符最后一个字符就会出现乱码;若采用<postfield>,POST方式提交,则还是需要解码16进制的函数。

如果是采用JavaScript则,接收页面:
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%>
……
<%= decodeURI(Request("name"))%>

【2005年1月27日新添】WAP中文字符传递 ASP解决方案

ASP页面中,只要把Request来的数据采用以下函数URLDecode解码就可以了

<%=URLDecode(Request("name"))%>

  1. <%
  2. Function URLDecode(enStr)
  3.         dim deStr
  4.         dim c,i,v
  5.         deStr=""
  6.         for i=1 to len(enStr)
  7.                 c=Mid(enStr,i,1)
  8.                 if c="%" then
  9.                         v=eval("&h"+Mid(enStr,i+1,2))
  10.                         if v<128 then
  11.                                 deStr=deStr&chr(v)
  12.                                 i=i+2
  13.                         else
  14.                                 if isvalidhex(mid(enstr,i,3)) then
  15.                                         if isvalidhex(mid(enstr,i+3,3)) then
  16.                                                 v=eval("&h"+Mid(enStr,i+1,2)+Mid(enStr,i+4,2))
  17.                                                 deStr=deStr&chr(v)
  18.                                                 i=i+5
  19.                                         else
  20.                                                 v=eval("&h"+Mid(enStr,i+1,2)+cstr(hex(asc(Mid(enStr,i+3,1)))))
  21.                                                 deStr=deStr&chr(v)
  22.                                                 i=i+3
  23.                                         end if
  24.                                 else
  25.                                         destr=destr&c
  26.                                 end if
  27.                         end if
  28.                 else
  29.                         if c="+" then
  30.                                 deStr=deStr&" "
  31.                         else
  32.                                 deStr=deStr&c
  33.                         end if
  34.                 end if
  35.         next
  36.         URLDecode=deStr
  37. end function

  38. function isvalidhex(str)
  39.         isvalidhex=true
  40.         str=ucase(str)
  41.         if len(str)<>3 then isvalidhex=false:exit function
  42.         if left(str,1)<>"%" then isvalidhex=false:exit function
  43.                 c=mid(str,2,1)
  44.         if not (((c>="0") and (c<="9")) or ((c>="A") and (c<="Z"))) then isvalidhex=false:exit function
  45.                 c=mid(str,3,1)
  46.         if not (((c>="0") and (c<="9")) or ((c>="A") and (c<="Z"))) then isvalidhex=false:exit function
  47. end function

  48. %>
  49. <%=URLDecode("%BC%BC%CA%F5%D7%A8%C0%B8")%>
复制代码


【WAP中文字符传递 PHP解决方案】
现在给出PHP中的完美解决方案,无论是采用普通ASCII码,还是UTF-8格式存储,提交的中文字符奇偶,都没有问题。

采用普通文件格式ASCII码存储,保存为testgb.php
  1. <?php
  2. header("Content-Type: text/vnd.wap.wml;charset=GB2312");
  3. echo '<?xml version="1.0" encoding="GB2312"?>';
  4. echo '<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">';
  5. ?>
  6. <wml>
  7. <card id="main" title="PHP Web">
  8. <p>
  9. GET提交,结果:
  10. <?php echo iconv("utf-8", "gb2312",$_GET["name"]);?><br/>
  11. POST提交,结果:
  12. <?php echo iconv("utf-8", "gb2312",urldecode($_POST["name"])); ?><br/>
  13. <input name="name" emptyok="false" tabindex="2" format="*m"/>
  14. <a href="testgb.php?name=$(name:e)">提交aaa</a><br/>
  15. <anchor>提交anchor
  16. <go href="testgb.php" method="post">
  17. <postfield name="name" value="$(name:e)" />
  18. </go>
  19. </anchor><br/>
  20. </p>
  21. </card>
  22. </wml>
复制代码

采用UTF-8格式存储,保存为test_utf.php
  1. <?php
  2. header("Content-Type: text/vnd.wap.wml;charset=UTF-8");
  3. echo '<?xml version="1.0" encoding="UTF-8"?>';
  4. echo '<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">';
  5. ?>
  6. <wml>
  7. <card id="main" title="PHP Web">
  8. <p>
  9. GET提交,结果:
  10. <?php echo $_GET["name"]; ?><br/>
  11. POST提交,结果:
  12. <?php echo urldecode($_POST["name"]); ?><br/>
  13. <input name="name" emptyok="false" tabindex="2" format="*m"/>
  14. <a href="test_utf.php?name=$(name:e)">提交aaa</a><br/>
  15. <anchor>提交anchor
  16. <go href="test_utf.php" method="post">
  17. <postfield name="name" value="$(name:e)" />
  18. </go>
  19. </anchor><br/>
  20. </p>
  21. </card>
  22. </wml>
复制代码

JSP方面我不会,没有测试。

JSP方面,苛子:测试也有中文奇偶字符问题
  1. public static String decode(String s)
  2. {
  3. StringBuffer stringbuffer = new StringBuffer();
  4. s = s.replace('%','0');
  5. for(int i=1; i<s.length(); i+=3)
  6. {
  7. if(s.charAt(i)=='+')
  8. {
  9. stringbuffer.append(' ');
  10. i++;
  11. continue;
  12. }

  13. try {
  14. stringbuffer.append((char)Integer.parseInt(s.substring(i, i+2), 16));
  15. } catch (Exception e) {
  16. }
  17. }
  18. String s1 = stringbuffer.toString();
  19. try
  20. {
  21. byte abyte0[] = s1.getBytes("ISO-8859-1");
  22. s1 = new String(abyte0, "UTF-8");
  23. }
  24. catch(UnsupportedEncodingException unsupportedencodingexception) {}
  25. return s1;
  26. }
复制代码


苛子说:这个decode是我修改过了的, Servlet里面那个decode好像有问题,解不了奇数个的中文.
这个decode是我修改过了的, Servlet里面那个decode好像有问题,解不了奇数个的中文.

其他可参考:
http://bbs.blueidea.com/viewthread.php?tid=1808167
http://bbs.blueidea.com/viewthread.php?tid=1499094
西部数码顶级域名注册商39元抢注!
帖子
2763
体力
11869
威望
0
居住地
河北省 石家庄市
发表于 2004-11-2 10:18:00 |显示全部楼层

[教程]WAP中,中文字符传递的PHP完美解决方案

楼主辛苦了,支持!
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

帖子
28
体力
116
威望
0
发表于 2004-11-3 11:21:00 |显示全部楼层

[教程]WAP中,中文字符传递的PHP完美解决方案

ASP的呢?我只会ASP呀~~呜呜~~

使用道具 举报

yytcpt 楼主

太极无影

荣誉管理 手机认证 

帖子
1310
体力
9061
威望
15
发表于 2004-11-8 17:48:00 |显示全部楼层

[教程]WAP中,中文字符传递的PHP完美解决方案

有关ASP的解决方案,请详细参考图片的解释

使用道具 举报

帖子
8
体力
35
威望
0
发表于 2004-11-10 10:09:00 |显示全部楼层

[教程]WAP中,中文字符传递的PHP完美解决方案

Asp.net的呢??怎么用啊...教教我啊..我是新手.

使用道具 举报

yytcpt 楼主

太极无影

荣誉管理 手机认证 

帖子
1310
体力
9061
威望
15
发表于 2004-11-17 09:34:00 |显示全部楼层

[教程]WAP中,中文字符传递的PHP完美解决方案

当一篇文章太长时,比如大于1000字,在手机中需要分页,这个时候分页是按字数多少来进行分页的,虽然手机可以显示超过200个汉字,但是实际情况中,根据手机屏幕的大小,我们一般采取每页200个汉字,即:400个字符。


通用按字数分页方法,适合中英文混排。
使用WordPage($str,200);调用就可以了。

  1. <?php
  2.         //此文件UTF-8格式
  3.         $str = "按说寒冬早过,春日回暖,可天怎么还这么冷,就跟我的心情差不多。“最近比较烦比较烦比较烦”,唉,能不烦吗,今年是建安十二年,我已整整26岁,眼看直奔30,可我还在躬耕陇亩,一事无成,真是郁闷呀。前几天出了一趟门,其实也没什么事,就是消谴消谴。跟我那几个狐朋狗友开车到北边的水库钓钓鱼、划划船,又到西边山上的庙里抽了一签。那个仙风道骨的庙长说我这一签非同小可,有贵人来访、卧龙飞天之兆,硬跟我要二千文铜钱。啊呸,简直是敲诈,我丢给他50文了事。下山途中我想,这老家伙怎么知道我的外号叫卧龙的?";

  4.         WordPage($str,200);


  5. function WordPage($str, $num=200)
  6. {
  7.         //$num = 200;                一页显示多少汉字
  8.         $str = iconv("utf-8","gb2312",$str);
  9.         $PageAll = strlen($str)/($num*2)-1;
  10.         echo $PageAll;
  11.         $PageAll = ceil($PageAll);
  12.         if ($_GET['i']=="")
  13.         {
  14.                 $i = 1;
  15.         }
  16.         else
  17.         {
  18.                 $i = $_GET['i'];
  19.         }
  20.         $start = $i*$num;
  21.         //echo 'start='.$start;

  22.         $str = csubstr($str, $start, $num);
  23.         $str = iconv("gb2312","utf-8",$str);
  24.         echo $str.'<br/>';
  25.         echo $i.'===='.$PageAll.'<br/>';
  26.         if( (1<=$i) && ($i<=$PageAll))
  27.         {
  28.                 if( $i>1 )
  29.                 {
  30.                         echo '<a href="'.$_SERVER["PHP_SELF"].'?i='.($i-1).'">上一页</a><br/>';
  31.                 }
  32.                 if($i < $PageAll)
  33.                 {
  34.                         echo '<a href="'.$_SERVER["PHP_SELF"].'?i='.($i+1).'">下一页</a><br/>';
  35.                 }

  36.         }
  37. }

  38.         Function  csubstr($str,$start,$len)   
  39.         {   
  40.                 $strlen=strlen($str);   
  41.                 $clen=0;   
  42.                 for($i=0;$i<$strlen;$i++,$clen++)   
  43.                 {   
  44.                         if  ($clen>=$start+$len)   
  45.                         break;   
  46.                         if(ord(substr($str,$i,1))>0xa0)   
  47.                         {   
  48.                                 if  ($clen>=$start)   
  49.                                 $tmpstr.=substr($str,$i,2);   
  50.                                 $i++;   
  51.                         }   
  52.                         else   
  53.                         {   
  54.                                 if  ($clen>=$start)   
  55.                                 $tmpstr.=substr($str,$i,1);   
  56.                         }   
  57.                 }   
  58.                  
  59.                 return  $tmpstr;   
  60.         }  


  61. ?>       
复制代码



下面这个只适合英文和数字是全角的。


将所有要显示的文字赋值到字符串$str中,然后在$num中设置显示的字数就可以了。
用法为:

<?php
    $str = "要显示的文字……";
    page_num($str,200);
?>

注:以下函数是页面采用UTF-8时的

如果采用GB2312,则把$num = $num*3;修改为$num = $num*[color]2;
因为UTF-8格式中,一个中文占三个字节,GB2312中,一个中文字符占两个字节

  1. <?php
  2.         function page_num($str, $num = 200)
  3.         {
  4.                 //num=200        控制一页显示多少汉字
  5.                 $num = $num*3;
  6.                 if ($_GET['page']=="")
  7.                 {
  8.                         $page = 0;
  9.                 }
  10.                 else
  11.                 {
  12.                         $page = $_GET['page'];
  13.                 }
  14.                 if (strlen($str) > $num)
  15.                 {
  16.                         $str = substr($str, $num*$page, $num);
  17.                         echo $str.'<br/>';
  18.                         if ($page < (strlen($str)/$num))
  19.                                 {
  20.                                         echo '<a href="page.php?page='.($page+1).'">下一页</a><br/>';
  21.                                 }
  22.                         elseif($page > strlen($str)/$num)
  23.                                 {
  24.                                         echo '<a href="page.php?page='.($page-1).'">上一页</a><br/>';
  25.                                 }
  26.                         else
  27.                                 {
  28.                                         echo '<a href="page.php?page='.($page+1).'">下一页</a><br/>';
  29.                                         echo '<a href="page.php?page='.($page-1).'">上一页</a><br/>';
  30.                                 }
  31.                         $page++;
  32.                 }
  33.                 else
  34.                 {
  35.                         echo $str.'<br/>';
  36.                 }
  37.         }
  38. ?>
复制代码

使用道具 举报

hlddn 
帖子
34
体力
113
威望
0
发表于 2004-11-18 14:58:00 |显示全部楼层

WAP中文字符传递PHP解决方案,[新添加按字数分页函数]

老大测试一下这样的例子,utf-8格式,参数传递的时候用的下面的方法:
<a href="***.php?actid=12&amp;set=我爱我家">我爱我家</a>
php接收的时候用$set = $_GET['set'];但是显示出来的是乱码,又没有解决方法?

使用道具 举报

yytcpt 楼主

太极无影

荣誉管理 手机认证 

帖子
1310
体力
9061
威望
15
发表于 2004-11-19 10:30:00 |显示全部楼层

WAP中文字符传递PHP解决方案,[新添加按字数分页函数]

hlddn在上个帖子中说
老大测试一下这样的例子,utf-8格式,参数传递的时候用的下面的方法:
<a href="***.php?actid=12&amp;set=我爱我家">我爱我家</a>
php接收的时候用$set = $_GET['set'];但是显示出来的是乱码,又没有解决方法?


set=我爱我家  这个不是直接提交参数,而是通过input输入后,取得的表单变量,而且注意$(name:e)这个时候,文字已经被编码了,而不是直接写到网址的后面,参考如下方法

<?php echo $_GET["name"]; ?>

<input name="name" emptyok="false" tabindex="2" format="*m"/>
<a href="test_utf.php?name=$(name:e)">提交aaa</a><br/>

使用道具 举报

hlddn 
帖子
34
体力
113
威望
0
发表于 2004-11-21 10:10:00 |显示全部楼层

WAP中文字符传递PHP解决方案,[新添加按字数分页函数]

如果是直接提交参数,怎么才能显示正确的中文呢?我现在困惑的就是这个。

使用道具 举报

yytcpt 楼主

太极无影

荣誉管理 手机认证 

帖子
1310
体力
9061
威望
15
发表于 2004-12-1 21:13:00 |显示全部楼层

WAP中文字符传递PHP解决方案,[新添加按字数分页函数]

hlddn在上个帖子中说
如果是直接提交参数,怎么才能显示正确的中文呢?我现在困惑的就是这个。


在提交传递变量的过程中,浏览器做了我们不想让他做的工作,都把变量给编码了,还是老老实实的解码吧,没有偷懒的办法。

使用道具 举报

gyjing 
帖子
3
体力
17
威望
0
发表于 2005-1-26 12:36:00 |显示全部楼层

WAP中文字符传递PHP解决方案,[新添加按字数分页函数]

楼主说的ASP并没有解决方案啊,我试了半天找不出函数来,麻烦指教下。

我是MDB数据库,必须要用ASP,还有,只能用ASP,不能联系到VB哟,呵呵

unicode要转为gb2312的这种,如果用GET过去能不能给出示例啊?

我用的是T618的手机,结果测试GET这种不成功。

麻烦了啊。谢谢。

使用道具 举报

gyjing 
帖子
3
体力
17
威望
0
发表于 2005-1-26 12:38:00 |显示全部楼层

WAP中文字符传递PHP解决方案,[新添加按字数分页函数]

就是如何将%BC%BC%CA%F5%D7%A8%C0%B8这类用中文显示出来,如果是IE可以自动显示的,但WML不支持,呵呵。

使用道具 举报

yytcpt 楼主

太极无影

荣誉管理 手机认证 

帖子
1310
体力
9061
威望
15
发表于 2005-1-27 09:54:00 |显示全部楼层

WAP中文字符传递PHP解决方案,[新添加按字数分页函数]

gyjing在上个帖子中说
就是如何将%BC%BC%CA%F5%D7%A8%C0%B8这类用中文显示出来,如果是IE可以自动显示的,但WML不支持,呵呵。


Javascript函数:
decodeURL(%BC%BC%CA%F5%D7%A8%C0%B8)
可以转换

PHP函数:
urldecode(%BC%BC%CA%F5%D7%A8%C0%B8)

ASP函数:(ASP中默认的没有类似decodeURL函数,需要自己编写,以下函数通过网络搜集得到。)

<%=URLDecode("%BC%BC%CA%F5%D7%A8%C0%B8")%>

使用如下函数得到中文:技术专栏
  1. <%
  2. Function URLDecode(enStr)
  3.         dim deStr
  4.         dim c,i,v
  5.         deStr=""
  6.         for i=1 to len(enStr)
  7.                 c=Mid(enStr,i,1)
  8.                 if c="%" then
  9.                         v=eval("&h"+Mid(enStr,i+1,2))
  10.                         if v<128 then
  11.                                 deStr=deStr&chr(v)
  12.                                 i=i+2
  13.                         else
  14.                                 if isvalidhex(mid(enstr,i,3)) then
  15.                                         if isvalidhex(mid(enstr,i+3,3)) then
  16.                                                 v=eval("&h"+Mid(enStr,i+1,2)+Mid(enStr,i+4,2))
  17.                                                 deStr=deStr&chr(v)
  18.                                                 i=i+5
  19.                                         else
  20.                                                 v=eval("&h"+Mid(enStr,i+1,2)+cstr(hex(asc(Mid(enStr,i+3,1)))))
  21.                                                 deStr=deStr&chr(v)
  22.                                                 i=i+3
  23.                                         end if
  24.                                 else
  25.                                         destr=destr&c
  26.                                 end if
  27.                         end if
  28.                 else
  29.                         if c="+" then
  30.                                 deStr=deStr&" "
  31.                         else
  32.                                 deStr=deStr&c
  33.                         end if
  34.                 end if
  35.         next
  36.         URLDecode=deStr
  37. end function

  38. function isvalidhex(str)
  39.         isvalidhex=true
  40.         str=ucase(str)
  41.         if len(str)<>3 then isvalidhex=false:exit function
  42.         if left(str,1)<>"%" then isvalidhex=false:exit function
  43.                 c=mid(str,2,1)
  44.         if not (((c>="0") and (c<="9")) or ((c>="A") and (c<="Z"))) then isvalidhex=false:exit function
  45.                 c=mid(str,3,1)
  46.         if not (((c>="0") and (c<="9")) or ((c>="A") and (c<="Z"))) then isvalidhex=false:exit function
  47. end function

  48. %>
  49. <%=URLDecode("%BC%BC%CA%F5%D7%A8%C0%B8")%>
复制代码

使用道具 举报

gyjing 
帖子
3
体力
17
威望
0
发表于 2005-1-28 00:52:00 |显示全部楼层

WAP中文字符传递ASP,PHP解决方案

谢谢楼主这么耐心的讲解~

虽然这个问题解决了,但我用T618手机测试并不支持$(name:e)这样的格式,真白忙一场了,看来还得走$(name)用UTF-8与ASCII之间的转换,这样更麻烦了。。。


现在WAP真不如HTM好,许多版本不互通,HTM没有头没有尾也成,呵呵,可这个少什么也不行。。。

如果楼主有时间,一同探讨下怎么解决在T618的手机上的问题,如果方便,请发信息告诉我你的联系方法,愿意做个师徒关系。

使用道具 举报

nxii 
帖子
3
体力
20
威望
0
发表于 2005-2-1 10:26:00 |显示全部楼层

WAP中文字符传递ASP,PHP解决方案

to 楼主
能否发个ASP的例子

使用道具 举报

帖子
28
体力
116
威望
0
发表于 2005-2-16 16:26:00 |显示全部楼层

WAP中文字符传递ASP,PHP解决方案

nokia7210也不支持$(name:e)

使用道具 举报

帖子
28
体力
116
威望
0
发表于 2005-2-18 15:33:00 |显示全部楼层

WAP中文字符传递ASP,PHP解决方案

%CE%D2%CA%C7%D6%D0%B9%FA%C8%CB

以上的文字应该是"我是中国人",但被编码后变成的上述的样子,不知是什么码.用decodeURL及上述ASP的URLDecode(enStr)都解不出来.高手帮忙呀.

使用道具 举报

yytcpt 楼主

太极无影

荣誉管理 手机认证 

帖子
1310
体力
9061
威望
15
发表于 2005-2-18 17:12:00 |显示全部楼层

WAP中文字符传递ASP,PHP解决方案


是16进制编码
但是这个时候要考虑,是GB2312下,还是UTF-8
上面的URLDecode(enStr)只能解码GB2312下的16进制编码,如果是UTF-8就需要转码了

先解码URLDecode(“%CE%D2%CA%C7%D6%D0%B9%FA%C8%CB”)
然后再转码一次
如果你放在普通页面中,用IE浏览此解码后的字符,是可以的。

使用道具 举报

帖子
28
体力
116
威望
0
发表于 2005-3-17 11:44:00 |显示全部楼层
测试了版主yytcpt提供的代码,发现我的nokia7210不支持get提交,post提交正常.
谢谢版主!

使用道具 举报

帖子
28
体力
116
威望
0
发表于 2005-3-17 11:46:00 |显示全部楼层
但是网页http://www.designer5.net/wap/temp/test.asp在WinWap中不能显示正确的中文呀.

使用道具 举报

yytcpt 楼主

太极无影

荣誉管理 手机认证 

帖子
1310
体力
9061
威望
15
发表于 2005-3-17 12:21:00 |显示全部楼层
zetazhou在上个帖子中说
但是网页http://www.designer5.net/wap/temp/test.asp在WinWap中不能显示正确的中文呀.


因为WINWAP模拟器不支持UTF8编码(整个页面是UTF8编码的),其他模拟器可以。
实际也是以手机为准

Nokia7210,我还没发现,谢谢你的测试

使用道具 举报

帖子
1
体力
9
威望
0
发表于 2005-3-17 19:14:00 |显示全部楼层
我自己编的小程序,出现奇偶数字符的问题,怎么解决啊?
以下是代码

<%@ Language=VBScript %>
<% Response.ContentType="text/vnd.wap.wml;" %>
<?xml version="1.0"  encoding="gb2312"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="a" title="Example">
<p align="left">
姓名:  
<input name="name"/>
<anchor>查询
<go href="2.asp" method="post" >
<postfield name="name" value="$(name)"/>
</go>
</anchor>
</p>
</card>
</wml>
//2.asp
<%@ Language=VBScript %>
<% Response.ContentType="text/vnd.wap.wml" %><?xml version="1.0"  encoding="gb2312"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="a" title="Example">
<%function unicode2gb(str)
Set objstream=Server.CreateObject("ADODB.Stream")
objStream.type=2
objStream.Mode=3
objStream.Open
objStream.Charset="gb2312"
objStream.WriteText(trim(str))
objStream.Position=0
objStream.type=2
objStream.Charset="utf-8"
unicode2gb = trim(objStream.ReadText)
objstream.Close
set objstream=nothing
End Function%>
<p><%=unicode2gb(Request("name"))%></p>
<do type="prev" label="返回"> <prev/> </do>
</card>
</wml>

使用道具 举报

帖子
6
体力
19
威望
0
发表于 2005-3-24 10:26:00 |显示全部楼层
支持原创!
http://zhengyaohua.blogchina.com/
欢迎来我的博客网站进行交流!
迷茫人生,我想对你说:坚持是生存的一种本领,也是一种耐心和等待,坚持的过程其实是磨练的过程,在这个过程中,给临阵脱逃者的回报往往是失败,给知难而上者的回报大都是成功。  没有输在起跑点上这回事,人生是看终点,不是看起跑点。--沙溪秀才

使用道具 举报

ningqf 
帖子
11
体力
41
威望
0
发表于 2005-3-24 15:16:00 |显示全部楼层
不错,看得我想学

使用道具 举报

帖子
5
体力
24
威望
0
发表于 2005-3-31 10:36:00 |显示全部楼层
【WAP中文字符传递 PHP解决方案】
现在给出PHP中的完美解决方案,无论是采用普通ASCII码,还是UTF-8格式存储,提交的中文字符奇偶,都没有问题。

给出的这两个实例在 winwap 下不能用, 提交的中文变量 转成GB2312 之后都变成了 ÷ 号, 或者变成空值了,  这是怎么回事呢?

在M3Gate 下却可以正常使用, 各位高手帮帮忙回答一下

使用道具 举报

162100 

冰古

初级会员

帖子
139
体力
150
威望
0
居住地
广东省 广州市
发表于 2005-3-31 23:21:00 |显示全部楼层
确实是篇好冬冬哦!!
冰古blog

中文wordpress blogs大集合:Come on, add yours!

使用道具 举报

帖子
3
体力
16
威望
0
发表于 2005-4-4 15:51:00 |显示全部楼层

help!

我试了版主yytcpt提供的代码,使用的post提交方式,现在向access数据库中添加中文记录时,不再显示%*%*%*%*%*之类,但是还有有点问题,如输入:你好。显示:浣犲ソ锛
不知是什么码.请高手帮帮忙!!!.

使用道具 举报

yytcpt 楼主

太极无影

荣誉管理 手机认证 

帖子
1310
体力
9061
威望
15
发表于 2005-5-4 11:09:00 |显示全部楼层
页面编码,采用UTF-8编码

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<% Response.ContentType="text/vnd.wap.wml;charset=UTF-8" %>
<?xml version="1.0" encoding="UTF-8"?>

输入表单:<input name="text">

提交变量:<postfield name="text" value="$(text:n)" />

接收字符:Request.From("text")

使用道具 举报

帖子
8
体力
34
威望
0
发表于 2005-6-6 13:22:00 |显示全部楼层
版主,text:n 这个 :n是什么意思啊?

如果页面用GB2312,静态显示没有问题,但是表单提交会出现乱码,如果用ado.stream转换,又会出现奇数字缺字的问题(至少对于asp而言)

如果页面全部用UTF-8,数据库用access,也完全正常,请问这个之间UTF-8到GB2312的转换是不是系统自动完成的啊?

使用道具 举报

Treyi 
帖子
35
体力
97
威望
0
发表于 2005-6-6 13:46:00 |显示全部楼层
<针对jsp>
中文处理方法
1、jsp文件编码方式一定要为UTF-8,且contentType中charset一定要申明为UTF-8
2、普通显示文字直接输入,不需要转换
3、数据库读出、写入直接读写不需要转换
4、建议使用get方法传递(post方法会用乱码),在接受页面只要将ISO8859-1转换为UTF-8即可
第一次错过是我的错,第二次错过是你的错,再一次的错过是缘分

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-13 14:09 , Processed in 0.189232 second(s), 10 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部