CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

在asp二个不同编码(utf-8与gb2312)的页面传递汉字出乱码的问题

楼主lwlmaomao()2005-08-18 14:12:42 在 Web 开发 / ASP 提问

在asp二个不同编码(utf-8与gb2312)的页面传递汉字出乱码的问题  
   
  比如:  
  test1.asp是utf-8的编码  
  test2.asp是gb2312的编码  
   
  我在test1.asp有一个链接,<a   href="test2.asp?title=是是是是">link</a>  
  当我在test2.asp接收title参数里出乱码  
   
  请教如何解决不同编码之间页面相互传递参数的问题 问题点数:20、回复次数:3Top

1 楼lwlmaomao()回复于 2005-08-18 14:37:34 得分 0

没有帮我吗?:(郁闷ing...Top

2 楼valu(V6bbs Ver1.4发布(仿西祠xici):www.v6bbs.com)回复于 2005-10-28 15:26:29 得分 20

用Server.URLEncode(str)Top

3 楼www0aspsun0com(源码联盟)回复于 2005-12-31 14:24:34 得分 0

我在回复一遍,真的测试过了,楼主多给分就满足了,谢谢,呵呵。  
   
  以下测试通过  
  test1.asp是utf-8的编码  
  test2.asp是gb2312的编码  
   
  test1.asp处理成,<a   href="test2.asp?title=<%=Server.URLEncode("是是是是")%>">link</a>  
  test2.asp处理成,title=U8Decode(Server.URLEncode(trim(request.QueryString("title"))))  
   
  附上U8Decode函数,加载在test2.asp页面上  
  <%  
  function   U8Decode(enStr)  
      '输入一堆有%分隔的字符串,先分成数组,根据utf8规则来判断补齐规则  
      '输入:关   E5   85   B3     键     E9   94   AE   字       E5   AD   97  
      '输出:关   B9D8     键     BCFC   字       D7D6  
      dim   c,i,i2,v,deStr,WeiS  
   
      for   i=1   to   len(enStr)  
          c=Mid(enStr,i,1)  
          if   c="%"   then  
              v=c16to2(Mid(enStr,i+1,2))  
              '判断第一次出现0的位置,  
              '可能是1(单字节),3(3-1字节),4,5,6,7不可能是2和大于7  
              '理论上到7,实际不会超过3。  
              WeiS=instr(v,"0")  
              v=right(v,len(v)-WeiS)'第一个去掉最左边的WeiS个  
              i=i+3  
              for   i2=2   to   WeiS-1  
                  c=c16to2(Mid(enStr,i+1,2))  
                  c=right(c,len(c)-2)'其余去掉最左边的两个  
                  v=v   &   c  
                  i=i+3  
              next  
              if   len(c2to16(v))   =4   then  
                  deStr=deStr   &   chrw(c2to10(v))  
              else  
                  deStr=deStr   &   chr(c2to10(v))  
              end   if  
              i=i-1  
          else  
              if   c="+"   then  
                  deStr=deStr&"   "  
              else  
                  deStr=deStr&c  
              end   if  
          end   if  
      next  
      U8Decode   =   deStr  
  end   function  
   
  function   c16to2(x)  
    '这个函数是用来转换16进制到2进制的,可以是任何长度的,一般转换UTF-8的时候是两个长度,比如A9  
    '比如:输入“C2”,转化成“11000010”,其中1100是"c"是10进制的12(1100),那么2(10)不足4位要补齐成(0010)。  
    dim   tempstr  
    dim   i:i=0'临时的指针  
   
    for   i=1   to   len(trim(x))  
      tempstr=   c10to2(cint(int("&h"   &   mid(x,i,1))))  
      do   while   len(tempstr)<4  
        tempstr="0"   &   tempstr'如果不足4位那么补齐4位数  
      loop  
      c16to2=c16to2   &   tempstr  
    next  
  end   function  
   
  function   c2to16(x)  
      '2进制到16进制的转换,每4个0或1转换成一个16进制字母,输入长度当然不可能不是4的倍数了  
   
      dim   i:i=1'临时的指针  
      for   i=1   to   len(x)     step   4  
        c2to16=c2to16   &   hex(c2to10(mid(x,i,4)))  
      next  
  end   function  
   
  function   c2to10(x)  
      '单纯的2进制到10进制的转换,不考虑转16进制所需要的4位前零补齐。  
      '因为这个函数很有用!以后也会用到,做过通讯和硬件的人应该知道。  
      '这里用字符串代表二进制  
        c2to10=0  
        if   x="0"   then   exit   function'如果是0的话直接得0就完事  
        dim   i:i=0'临时的指针  
        for   i=   0   to   len(x)   -1'否则利用8421码计算,这个从我最开始学计算机的时候就会,好怀念当初教我们的谢道建老先生啊!  
          if   mid(x,len(x)-i,1)="1"   then   c2to10=c2to10+2^(i)  
        next  
  end   function  
   
  function   c10to2(x)  
  '10进制到2进制的转换  
      dim   sign,   result  
      result   =   ""  
      '符号  
      sign   =   sgn(x)  
      x   =   abs(x)  
      if   x   =   0   then  
          c10to2   =   0  
          exit   function  
      end   if  
      do   until   x   =   "0"  
          result   =   result   &   (x   mod   2)  
          x   =   x   \   2  
      loop  
      result   =   strReverse(result)  
      if   sign   =   -1   then  
          c10to2   =   "-"   &   result  
      else  
          c10to2   =   result  
      end   if  
  end   function  
  %>Top

相关问题

  • 如何用ASP判断汉字编码?
  • 汉字的编码
  • 汉字编码问题,急...
  • 100分求汉字编码
  • 在asp二个不同编码(utf-8与gb2312)的页面传递汉字出乱码的问题
  • 询问问汉字编码的规则
  • 是不是汉字编码的问题?
  • 关于汉字编码的问题
  • 汉字编码的问题,Should be simple
  • 如何取得汉字的unicode编码

关键词

  • 编码
  • 乱码
  • 汉字
  • 页面
  • asp
  • 页面传递汉字
  • gb2312
  • utf
  • 不同
  • 参数

得分解答快速导航

  • 帖主:lwlmaomao
  • valu

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo