这个你试试看,不知行不行啊
http://www.phpchina.cn/bbs/thread-39210-1-1.html

解决方案 »

  1.   

    GB页这样接收<script language="JScript" runat="Server">
    function decodeURL(x) { return decodeURIComponent(x); }
    </script>
    <%Dim param
    param = decodeURL(Server.URLEncode(Request.Form("param")))
    Response.Write param%>
      

  2.   

    多此一举,根本不用转换!HTML表单自动将提交的内容格式化为Unicode
    形如 %27%45%78
      

  3.   

    我要用js实现,是在html页面做,谢谢
      

  4.   

    js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent1、   传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。                            例如:<script language="javascript">document.write('<a href="http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent("http://cang.baidu.com/bruce42")+'">退出</a>');</script>2、   进行url跳转时可以整体使用encodeURI例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");3、   js使用数据时可以使用escape[Huoho.Com编辑] 
    例如:搜藏中history纪录。4、   escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。
    最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-ZencodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-ZencodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
      

  5.   

    encodeURI, encodeURIComponent 是 UTF-8 的
    escape 是  Unicode 的楼主如果一定要在客户端 编 GB2312
    常见有下面三个手段:
    1 利用 VBScript (限 IE)
    2 利用 Flash (限已装 FlashPlayer 插件)
    3 利用 Unicode-GBK 对照表 (较好)
    这三个百度一下可以找到很多再提供一个思路就是:
    用 iframe 包括一个 GB2312 页面
    提交时让 iframe 中GB页的表单代为提交
      

  6.   

    http://topic.csdn.net/u/20080920/17/95714b3f-1c11-4a70-b80a-6c0e04a40169.html
      

  7.   

    上面的方法我都试过了,还是不行,我是从一个网站提交到另一个网站,请求的页面是html页面utf-8编码的,接受处理请求的页面是asp页面gb2312编码的,escape方法我试过了,有没有解决的,谢谢,如果有遇到相同问题的,请写出详细的js转码,再次感谢!
      

  8.   

    http://www.jb51.net/article/5466.htm,这个里面有一个方法解决了我的问题,但是这个数组太大了,严重影响了页面的加载速度,所以我想换个方法进行代码转换,谢谢大家了,有解决的请告诉我您的解决方法,如果能写出详细的方法更好,谢谢!
      

  9.   

    http://www.jb51.net/article/5466.htm,这个里面有一个方法解决了我的问题,但是这个数组太大了,严重影响了页面的加载速度,所以我想换个方法进行代码转换,谢谢大家了,有解决的请告诉我您的解决方法,如果能写出详细的方法更好,谢谢!
      

  10.   

    http://www.jb51.net/article/5466.htm
    上面用的就是对照表,  虽然加了大量的信息, 但兼容性还是比较好.
    ----------------------下面是用 VBScript 的例子, 局限IE
    http://www.ialvin.cn/blog/article.asp?id=131还有个利用 Flash 的例子, 要求 Flash8+
    http://www.ialvin.cn/util/py.htm你还是用 http://www.jb51.net/article/5466.htm 这个吧!
      

  11.   


    嘿嘿,昨天不小心多点了几次,最后问题解决了却不让我回复了,只有等到今天回复了,我现在已经解决了,只需要调用下面这个方法就行了,代码量少了很多
    function gb2312(key)
    {
       var r = "";
       for(var i=0;i<key.length;i++)
       {
           var t = key.charCodeAt(i);
           if(t>=0x4e00 || t==0x300A || t==0x300B)
           {
              try
              {
                 execScript("ascCode=hex(asc(\""+key.charAt(i)+"\"))", "vbscript"); r += ascCode.replace(/(.{2})/g, "%$1"); }
               catch(e)
              {}
            }
            else{r += escape(key.charAt(i))}
        }
        return r;
    }
    这个方法来源与http://blog.csdn.net/wcfboy1/archive/2008/08/25/2825343.aspx
    还是要谢谢你们,我明天来结贴
      

  12.   

    另辟蹊径的思路:【假设你要由A(utf-8)提交请求给B(gb2312)】
    在A中暗含一个gb2312的<iframe>(称为C),需要提交请求前,先用js将有关数据赋值给C,再由C提交请求给B。A到C的过程是在内存中以UNICODE无需转换,C和B的编码是相同的所以无需转换。该方法适用于的任何编码的页面之间,且适用于各种主流浏览器,通用。楼主的function gb2312(key)只能在IE内核浏览器有效,对firefox,opera等无效,因为你是调用vbscript.
      

  13.   

    在firefox中是不能用,麻烦楼上能不能说 的清楚点,简单点的
      

  14.   

    需要写一个类用来转化编码问题,还有就是传递参数一定要用这个编码累
    package com.johe.util;import java.io.UnsupportedEncodingException;import sun.misc.BASE64Decoder;public class StringConvert {



    public static String changToGBK(String str){
    String result=null;
    try {
    //String [] strArray=str.split("/");
    boolean b=false;
    //for(int i=0;i<strArray.length;i++){
    if(!str.matches("^[0-9a-zA-Z、.。?!……/\u4e00-\u9fa5]*$") ){
    result= new String(str.getBytes("iso8859-1"),"gbk");
    }

    else{
    result=str;
    }
    //}


    } catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return result;
    }

    public  static  void main(String [] args){
    System.out.println(decodeBASE64(encodeBASE64("")));
    }

      public static String encodeBASE64(String s)  { 
    if (s == null) return null; 
    try {
    return (new sun.misc.BASE64Encoder()).encode( s.getBytes("gbk") );
    } catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return s; 


    // 将 BASE64 编码的字符串 s 进行解码 
    public static String decodeBASE64(String s) { 
    if (s == null) return null; 
    BASE64Decoder decoder = new BASE64Decoder(); 
    try { 
    byte[] b = decoder.decodeBuffer(s); 
    return new String(b); 
    } catch (Exception e) { 
    return null; 

    }  }这个是一个把gb2312转化成GBk的;类