国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > ASP > 正文

utf-8編碼轉換成gb2312

2020-07-27 13:27:40
字體:
來源:轉載
供稿:網友
[code]<script>  
function  chinesefromutf8url(strutf8)    
{  
           var  bstr  =  "";  
           var  noffset  =  0; 
 //  processing  point  on  strutf8               
           if(  strutf8  ==  ""  )  
               return  "";                 
           strutf8  =  strutf8.tolowercase();  
           noffset  =  strutf8.indexof("%e");  
           if(  noffset  ==  -1  )  
               return  strutf8;  

           while(  noffset  !=  -1  )  
           {  
               bstr  +=  strutf8.substr(0,  noffset);  
               strutf8  =  strutf8.substr(noffset,  strutf8.length  -  noffset);  
               if(  strutf8  ==  ""    ¦  ¦  strutf8.length  <  9  )      //  bad  string  
                   return  bstr;  

               bstr  +=  utf8codetochinesechar(strutf8.substr(0,  9));  
               strutf8  =  strutf8.substr(9,  strutf8.length  -  9);  
               noffset  =  strutf8.indexof("%e");  
           }  

           return  bstr  +  strutf8;  
}  

function  unicodefromutf8(strutf8)    
{  
           var  bstr  =  "";  
           var  ntotalchars  =  strutf8.length;            //  total  chars  to  be  processed.  
           var  noffset  =  0;                                                            //  processing  point  on  strutf8  
           var  nremainingbytes  =  ntotalchars;            //  how  many  bytes  left  to  be  converted  
           var  noutputposition  =  0;  
           var  icode,  icode1,  icode2;                                    //  the  value  of  the  unicode.  

           while  (noffset  <  ntotalchars)  
           {  
                       icode  =  strutf8.charcodeat(noffset);  
                       if  ((icode  &  0x80)  ==  0)                                    //  1  byte.  
                       {  
                                   if  (  nremainingbytes  <  1  )                        //  not  enough  data  
                                               break;  

                                   bstr  +=  string.fromcharcode(icode  &  0x7f);  
                                   noffset  ++;  
                                   nremainingbytes  -=  1;  
                       }  
                       else  if  ((icode  &  0xe0)  ==  0xc0)            //  2  bytes  
                       {  
                                   icode1  =    strutf8.charcodeat(noffset  +  1);  
                                   if  (  nremainingbytes  <  2    ¦  ¦                                    //  not  enough  data  
                                                 (icode1  &  0xc0)  !=  0x80  )                        //  invalid  pattern  
                                   {  
                                               break;  
                                   }  

                                   bstr  +=  string.fromcharcode(((icode  &  0x3f)  <<  6)    ¦  (              icode1  &  0x3f));  
                                   noffset  +=  2;  
                                   nremainingbytes  -=  2;  
                       }  
                       else  if  ((icode  &  0xf0)  ==  0xe0)            //  3  bytes  
                       {  
                                   icode1  =    strutf8.charcodeat(noffset  +  1);  
                                   icode2  =    strutf8.charcodeat(noffset  +  2);  
                                   if  (  nremainingbytes  <  3    ¦  ¦                                    //  not  enough  data  
                                                 (icode1  &  0xc0)  !=  0x80    ¦  ¦                        //  invalid  pattern  
                                                 (icode2  &  0xc0)  !=  0x80  )  
                                   {  
                                               break;  
                                   }  

                                   bstr  +=  string.fromcharcode(((icode  &  0x0f)  <<  12)    ¦    
                                                           ((icode1  &  0x3f)  <<    6)    ¦  
                                                           (icode2  &  0x3f));  
                                   noffset  +=  3;  
                                   nremainingbytes  -=  3;  
                       }  
                       else                                                                                                //  4  or  more  bytes  --  unsupported  
                                   break;  
           }  

           if  (nremainingbytes  !=  0)  
           {  
                       //  bad  utf8  string.  
                       return  "";  
           }  

           return  bstr;  
}  

function  utf8codetochinesechar(strutf8)  
{  
   var  icode,  icode1,  icode2;  
   icode  =  parseint("0x"  +  strutf8.substr(1,  2));  
   icode1  =  parseint("0x"  +  strutf8.substr(4,  2));  
   icode2  =  parseint("0x"  +  strutf8.substr(7,  2));  

   return  string.fromcharcode(((icode  &  0x0f)  <<  12)    ¦    
                                                           ((icode1  &  0x3f)  <<    6)    ¦  
                                                           (icode2  &  0x3f));  
}  
alert(chinesefromutf8url("%e6%b5%8b%e8%af%95"))  
</script>[code]
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潞城市| 安仁县| 政和县| 元阳县| 玉树县| 灌阳县| 绥德县| 喀喇沁旗| 苗栗县| 凤城市| 肃北| 道孚县| 清丰县| 鄂尔多斯市| 简阳市| 集安市| 太康县| 麦盖提县| 都昌县| 宜君县| 白银市| 长海县| 青浦区| 诸暨市| 商南县| 青铜峡市| 渝中区| 抚顺市| 都江堰市| 麦盖提县| 凌源市| 南召县| 汶川县| 江北区| 榆树市| 达孜县| 塔河县| 陕西省| 特克斯县| 临颍县| 黔南|