搜尋
首頁php教程php手册UTF-8转换成GB2312的全处理

  主题:将UTF-8编码的字符串转化成GB2312的编码,没有对应编码的字符串转化为DEC; 的格式。如 회=>회

  语言:PHP,Javascript

  内容:浏览器用Javascript中encodeURI函数将字符串(包含非GB2312中字符)编码,GET请求到服务器,页面编码均为GB2312,服务器PHP脚本将请求数据转换成GB2312表示。

  基础:

  1. 单独使用iconv函数只能转换GB2312字符,外文字符无法转换
  2. 没有现成的函数可以用
  3. bindec()函数:将二进制格式的"01"字符串转换为十进制数
  4. decbin()函数:将十进制数转换为二进制字符串,如decbin(224)="11100000"

  思路:因为UTF-8分别有1,2,3字节编码,中日韩文都是3字节编码,处理时根据字符编码中首字节大小区分字节数量。

  1.如首字节小于128,为ASCII码
  2.128~192,非UTF-8编码,且处理为ord();
  3. 192~224,  双字节UTF-8编码
  4. 224~240,三字节编码
  5. 240~248,四字节编码
  6. 。。。
  7. 对于三字节编码的尝试用iconv转换成GB2312
  8. 非GB2312的多字节字符,尝试把UTF-8转换成Unicode,再取到Unicode十进制值
  9. 可以考虑使用位运算,也可以用bindec()函数

  程序:

 function GetGB2312String($name)
 {
  $tostr = "";
  for($i=0;$i  {
   $curbin = ord(substr($name,$i,1));
   if($curbin    {
    $tostr .= substr($name,$i,1);
   }elseif($curbin     $str = substr($name,$i,1);
    $tostr .= "".ord($str).";";
   }elseif($curbin     $str = substr($name,$i,2);
    $tostr .= "".GetUnicodeChar($str).";";
    $i += 1;
   }elseif($curbin     $str = substr($name,$i,3);
    $gstr= iconv("UTF-8","GB2312",$str);
    if(!$gstr)
    {
     $tostr .= "".GetUnicodeChar($str).";";
    }else{
     $tostr .= $gstr;
    }
   
    $i += 2;
   }elseif($curbin     $str = substr($name,$i,4);
    $tostr .= "".GetUnicodeChar($str).";";
   
    $i += 3;
   }elseif($curbin     $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  {
   $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



陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器