91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php怎么實現unicode和utf8的轉換

發布時間:2020-07-11 09:16:48 來源:億速云 閱讀:196 作者:Leah 欄目:編程語言

php怎么實現unicode和utf8的轉換?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

用php實現unicode和utf8轉換的方法:首先對于【4-6】字節編碼的情況不必考慮;然后出現四字節以上的【utf-8】字符,可以直接視為亂碼忽略掉或轉為unicode實體形式即可,代碼為【$utf8char = "&#{$c};"】。

php怎么實現unicode和utf8的轉換

用php實現unicode和utf8轉換的方法:

unicode編碼是實現utf-8與gb系列編碼(gb2312、gbk、gb18030)轉換的基礎,雖然我們也可以直接做一個utf-8到這些編碼的對照表,但很少有人會這么做,因為utf-8的可變編碼具有不確定性,因此一般情況使用都是unicode與gb編碼的對照表,unicode(UCS-2)實際上是utf-8的基礎編碼,utf-8只是它的一種實現而已,兩者存在下面的對應關系:

  • Unicode符號范圍           | UTF-8編碼方式

  • u0000 0000 - u0000 007F   | 0xxxxxxx

  • u0000 0080 - u0000 07FF   | 110xxxxx 10xxxxxx

  • u0000 0800 - u0000 FFFF   | 1110xxxx 10xxxxxx 10xxxxxx

由于目前utf-8使用的字符都是居于UCS-2的,因此對于4-6字節編碼的情況是不必考慮的,同樣地,在反向轉換的時候,如果出現四字節以上的utf-8字符,可以直接視為亂碼忽略掉或轉為unicode實體形式("&#long int;"形式),然后交給瀏覽器或相關解析程序去處理,用php把unicode轉為utf-8編碼的算法如下:

/*
 * 參數 $c 是unicode字符編碼的int類型數值,如果是用二進制讀取的數據,在php中通常要用 hexdec(bin2hex( $bin_unichar )) 這樣轉換
 */
function uni2utf8( $c )
{
  if ($c < 0x80)
  {
        $utf8char = chr($c);
  }
  else if ($c < 0x800)
  {
        $utf8char = chr(0xC0 | $c >> 0x06).chr(0x80 | $c & 0x3F);
  }
  else if ($c < 0x10000)
  {
        $utf8char = chr(0xE0 | $c >> 0x0C).chr(0x80 | $c >> 0x06 & 0x3F).chr(0x80 | $c & 0x3F);
  }
  //因為UCS-2只有兩字節,所以后面的情況是不可能出現的,這里只是說明unicode HTML實體編碼的用法。
  else
  {
        $utf8char = "&#{$c};";
  }
  return $utf8char;
}

在目前的環境范圍內,可以認為 utf-8字符集==unicode(UCS-2),但從理論上,主要字符集關系的包含關系如下:

utf-8 > unicode(UCS-2) > gb18030 > gbk > gb2312

因此,如果編碼都正確的情況下:

gb2312 => gbk => gb18030 => unicode(UCS-2) => utf-8

這樣的一個轉變過程,基本上是無損的,但反而言之,由

utf-8 => unicode(UCS-2) => gb18030=> gbk => gb2312

這樣的轉變過程,是很可能存在不能識別的字符的,因此,如果對于使用utf-8編碼的系統,盡量不要輕易的去做反向轉換編碼的操作。


關于php怎么實現unicode和utf8的轉換問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南漳县| 江源县| 清水河县| 玉林市| 正安县| 普安县| 扶绥县| 镇平县| 平和县| 怀安县| 赤壁市| 永年县| 寿宁县| 志丹县| 临安市| 新密市| 天峻县| 平阳县| 蓬安县| 遵义县| 雅江县| 加查县| 曲水县| 广河县| 赞皇县| 昌都县| 罗田县| 台前县| 临江市| 乡宁县| 西乡县| 鄄城县| 邯郸市| 自治县| 平顶山市| 宜都市| 页游| 凤台县| 白水县| 洮南市| 隆尧县|