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

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

[ Ctrl + D 鍵 ]收藏本站

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

編程

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

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

閱讀 :909

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

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

  語言:PHP,Javascript

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

  基礎(chǔ):

  1. 單獨(dú)使用iconv函數(shù)只能轉(zhuǎn)換GB2312字符,外文字符無法轉(zhuǎn)換
  2. 沒有現(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. 對于三字節(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說法有誤的是 下一篇 【方向鍵 ( → )下一篇】

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

精品黑丝无码| 无码在线肉| 夜夜爽一区二区三区视频| 国产成人a视频在线观看| 欧美日韩国产精品一区二区三区| 国产在线精品国自产拍影院午夜蜜臀| 久久国产农村乱子伦| 亚洲热视频在线| 久久久A级片| 国产欧美一区二区在线| 日本一道日本一道| 污污精品视频网站在线观看| 无码导航在线| 日日摸夜夜夜无码专区| 欧美又长又粗| 开心激情婷婷| 热国产精品视频麻豆| 精品一区无码| 国产午夜激情视频| 少妇特黄A一区二区三区88AV| 欧美国产综合色| 国产91欧美| 成人无码区免费aⅴ片www| 国产片一区二区三四区| 无码专区天天燥| 美女国产一多| 2020亚洲免费在线| 国产乱来视频| 日韩国产污| 999www.熟妇| 97精品久久久久中文字幕| 亚洲一区二区三区影院| 欧美成人免费一区二区三区视频| 免费看片人成视频| 日韩国产欧美性爱| 网曝中文字幕亚洲无码| 日韩欧美另类久久久精品| 欧美色图在线观看| 最新91综合国产欧美亚洲| 亚洲无码日韩999| 日韩欧美黄色电影网站|