zoukankan      html  css  js  c++  java
  • js的utf8编码

    可以解决asp.net request.Querystring["中文"] 乱码的问题!
    function EncodeUtf8(s1)
    {
    var s 
    = escape(s1);
    //alert(s);
    var sa = s.split("%");
    var retV 
    ="";
    if(sa[0!= "") retV = sa[0];
    for(var i = 1; i < sa.length; i ++)
    {
    if(sa[i].substring(0,1== "u")
    {

    retV 
    += Hex2Utf8(Str2Hex(sa[i].substring(1,5)));
    retV 
    += sa[i].substring(5,100);//垃圾猪注:我改进了下算法,支持存在非中文字符了,中间之间长度应该不会超过100个吧.不然就++吧
    }

    else
    {
    retV 
    +=  sa[i];
    }

    }

    return retV;
    }


    //----------------------------------------------------------------------------
    function Str2Hex(s)
    {
    var c 
    = "";
    var n;
    var ss 
    = "0123456789ABCDEF";
    var digS 
    = "";
    for(var i = 0; i < s.length; i ++)
    {
    = s.charAt(i);

    = ss.indexOf(c);

    digS 
    += Dec2Dig(eval(n));


    }

    return digS;
    }


    //----------------------------------------------------------------------------
    function Dec2Dig(n1)
    {
    var s 
    = "";
    var n2 
    = 0;
    for(var i = 0; i < 4; i++)
    {
    n2 
    = Math.pow(2,3 - i);



    if(n1 >= n2)
    {
    += '1';
    n1 
    = n1 - n2;
    }

    else
    {
    += '0';
    }

    }

    //alert(s);
    return s;
    }


    //----------------------------------------------------------------------------
    function Dig2Dec(s)
    {
    var retV 
    = 0;
    if(s.length == 4)
    {
    for(var i = 0; i < 4; i ++)
    {
    retV 
    += eval(s.charAt(i)) * Math.pow(23 - i);
    }

    return retV;
    }

    return -1;
    }


    //----------------------------------------------------------------------------
    function Hex2Utf8(s)
    {
    var retS 
    = "";
    var tempS 
    = "";
    var ss 
    = "";
    if(s.length == 16)
    {
    tempS 
    = "1110" + s.substring(04);
    tempS 
    += "10" + s.substring(410); 
    tempS 
    += "10" + s.substring(10,16); 
    var sss 
    = "0123456789ABCDEF";
    for(var i = 0; i < 3; i ++)
    {
    retS 
    += "%";
    ss 
    = tempS.substring(i * 8, (eval(i)+1)*8);
    retS 
    += sss.charAt(Dig2Dec(ss.substring(0,4)));
    retS 
    += sss.charAt(Dig2Dec(ss.substring(4,8)));
    }

    return retS;
    }

    return "";
    }
  • 相关阅读:
    【转】ArcGIS 合并要素 Union Dissolve Append Merge
    Linux命令行下编辑常用快捷键
    rpm aid用法
    SUSE 吉祥物图片
    F9初装体验
    openSUSE10、SUSE EVAL10和SUSE10的区别[翻译]
    装有Linux DIY牛人百元人民币昂贵甜头液晶一体机
    SUSE10.3恢复GRUB体例
    64位Fedora还挑CPU
    Ubuntu8.04安置XCrysDen
  • 原文地址:https://www.cnblogs.com/wbcms/p/1222656.html
Copyright © 2011-2022 走看看