蜜桃无码视频,欧美日韩一=三道夲,国产精品午夜AV电影网免费看,aaa.www

歡迎來(lái)到 常識(shí)詞典網(wǎng) , 一個(gè)專(zhuān)業(yè)的常識(shí)知識(shí)學(xué)習(xí)網(wǎng)站!

[ Ctrl + D 鍵 ]收藏本站

您所在的位置:首頁(yè) > 電腦網(wǎng)絡(luò) > 編程

編程

UTF-8轉(zhuǎn)GB2312的php代碼

分類(lèi): 編程 常識(shí)詞典 編輯 : 常識(shí) 發(fā)布 : 12-09

閱讀 :872

在UTF-8,與UNICODE之間轉(zhuǎn)換的時(shí)候,用二進(jìn)制運(yùn)算,代替了字符串的轉(zhuǎn)換。UTF-8一個(gè)漢字,用3個(gè)字節(jié),而UNICODE用2個(gè)字節(jié);對(duì)應(yīng)關(guān)系如下:

將UTF-8編碼的字符串轉(zhuǎn)化成GB2312的編碼,沒(méi)有對(duì)應(yīng)編碼的字符串轉(zhuǎn)化為&#DEC; 的格式。如 회=>회

  語(yǔ)言:PHP,Javascript

  內(nèi)容:瀏覽器用Javascript中encodeURI函數(shù)將字符串(包含非GB2312中字符)編碼,GET請(qǐng)求到服務(wù)器,頁(yè)面編碼均為GB2312,服務(wù)器PHP腳本將請(qǐng)求數(shù)據(jù)轉(zhuǎn)換成GB2312表示。

  基礎(chǔ):

  1. 單獨(dú)使用iconv函數(shù)只能轉(zhuǎn)換GB2312字符,外文字符無(wú)法轉(zhuǎn)換
  2. 沒(méi)有現(xiàn)成的函數(shù)可以用
  3. bindec()函數(shù):將二進(jìn)制格式的"01"字符串轉(zhuǎn)換為十進(jìn)制數(shù)
  4. decbin()函數(shù):將十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制字符串,如decbin(224)="11100000"

  思路:因?yàn)閁TF-8分別有1,2,3字節(jié)編碼,中日韓文都是3字節(jié)編碼,處理時(shí)根據(jù)字符編碼中首字節(jié)大小區(qū)分字節(jié)數(shù)量。

  1.如首字節(jié)小于128,為ASCII碼
  2.128~192,非UTF-8編碼,且處理為&#ord();
  3. 192~224,  雙字節(jié)UTF-8編碼
  4. 224~240,三字節(jié)編碼
  5. 240~248,四字節(jié)編碼
  6. 。。。
  7. 對(duì)于三字節(jié)編碼的嘗試用iconv轉(zhuǎn)換成GB2312
  8. 非GB2312的多字節(jié)字符,嘗試把UTF-8轉(zhuǎn)換成Unicode,再取到Unicode十進(jìn)制值
  9. 可以考慮使用位運(yùn)算,也可以用bindec()函數(shù)

  程序:

 function GetGB2312String($name)
 {
  $tostr = "";
  for($i=0;$i<strlen($name);$i++)
  {
   $curbin = ord(substr($name,$i,1));
   if($curbin < 0x80)
   {
    $tostr .= substr($name,$i,1);
   }elseif($curbin < bindec("11000000")){
    $str = substr($name,$i,1);
    $tostr .= "&#".ord($str).";";
   }elseif($curbin < bindec("11100000")){
    $str = substr($name,$i,2);
    $tostr .= "&#".GetUnicodeChar($str).";";
    $i += 1;
   }elseif($curbin < bindec("11110000")){
    $str = substr($name,$i,3);
    $gstr= iconv("UTF-8","GB2312",$str);
    if(!$gstr)
    {
     $tostr .= "&#".GetUnicodeChar($str).";";
    }else{
     $tostr .= $gstr;
    }
   
    $i += 2;
   }elseif($curbin < bindec("11111000")){
    $str = substr($name,$i,4);
    $tostr .= "&#".GetUnicodeChar($str).";";
   
    $i += 3;
   }elseif($curbin < bindec("11111100")){
    $str = substr($name,$i,5);
    $tostr .= "&#".GetUnicodeChar($str).";";
   
    $i += 4;
   }else{
    $str = substr($name,$i,6);
    $tostr .= "&#".GetUnicodeChar($str).";";
   
    $i += 5;
   }
  }
 
  return $tostr;
 }
 
 function GetUnicodeChar($str)
 {
  $temp = "";
  for($i=0;$i<strlen($str);$i++)
  {
   $x = decbin(ord(substr($str,$i,1)));
   if($i == 0)
   {
    $s = strlen($str)+1;
    $temp .= substr($x,$s,8-$s);
   }else{
    $temp .= substr($x,2,6);
   }
  }
 
  return bindec($temp);
 }

  附:

U-00000000 - U-0000007F:  0xxxxxxx 
U-00000080 - U-000007FF:  110xxxxx 10xxxxxx 
U-00000800 - U-0000FFFF:  1110xxxx 10xxxxxx 10xxxxxx 
U-00010000 - U-001FFFFF:  11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 
U-00200000 - U-03FFFFFF:  111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 
U-04000000 - U-7FFFFFFF:  1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

下一篇:以下關(guān)于RDS說(shuō)法有誤的是 下一篇 【方向鍵 ( → )下一篇】

上一篇:網(wǎng)頁(yè)設(shè)計(jì)使用alt標(biāo)簽屬性 上一篇 【方向鍵 ( ← )上一篇】

中文亚洲爆乳av无码专区| 探索| 左云县| 国产精品99精品无码频亚| 无码人妻系列在线| 国产精品无码专区在线看片| 九九九久久性爱视频| 亚洲丝袜另类校园欧美| 欧美妇女在线| 日韩丰满少妇无码内射| 久久久久久久国产AV嫩草| 久久久国产精品亚洲二区蜜臀| 国产精品欧美亚洲hr| 亚洲成人绝费网站婷婷| av在线网站无码不卡的| 久久精品亚洲成在人线| 国产91免费福利中文字幕| 日韩一区二区在线看| 精品欧美日韩一区| 久久线| 色三区| 国产精品久久久久久久国产| 欧美精品-1800av| 国产精品免费不卡无码av| >国产日韩精品无码AV天天爽| av伊人天堂在线观看| 国产无遮挡污在线观看免费AV| 国产精品久久久久久福利69| 人禽伦免费视频播放| 人妻丰满熟妇av五码区| 一品道久久综合中文字幕| 无码人妻系列| 日韩黄色淫网| 欧美在线七页| 亚洲欧洲日韩在线三区| 国产一区欧美成人一区| av玖玖| 丁香五月一二三| 久久亚洲精品欧洲精品| 色五月 激情| 亚洲欧美日韩99二区|