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

首頁 > 語言 > PHP > 正文

php mb_detect_encoding判斷字符串編碼方法

2024-09-04 11:48:28
字體:
來源:轉載
供稿:網友

在php中利用mb_detect_encoding可以判斷給我們的字符是那個類型的編碼了,從而我們就可以利用inconv進行字符轉換了,下面給大家介紹幾個例子.

例子,利用mb_detect_encoding()判斷字符是否為uft-8編碼,代碼如下:

  1. $encode = mb_detect_encoding($qarray('GB2312','GBK','UTF-8')); 
  2. echo $encode."<br/>"
  3. if($encode=="GB2312"
  4.     $q = iconv("GBK","UTF-8",$q); 
  5. else if($encode=="GBK"
  6.     $q = iconv("GBK","UTF-8",$q); 
  7. else if($encode=="EUC-CN"
  8.     $q = iconv("GBK","UTF-8",$q); 
  9. else//CP936 
  10.     //$q = iconv("GB2312","UTF-8",$q); 

可是 mb_detect_encoding 存在一個硬傷,經常出現判斷不準確的情況,或許這樣就可以解決,代碼如下:

  1. // 使用 iconv 轉換并判斷是否等值,效率不高 
  2. function is_utf8 ($str) { 
  3.     if ($str === iconv('UTF-8''UTF-8//IGNORE'$str)) { 
  4.         return 'UTF-8'
  5.     } 
  6. // 多種編碼的情況 
  7. function detect_encoding ($str) { 
  8.     foreach (array('GBK''UTF-8'as $v) { 
  9.         if ($str === iconv($v$v . '//IGNORE'$str)) { 
  10.             return $v
  11.         } 
  12.     } 

通過以上方式得到字符串編碼信息后,就可以利用 iconv 或 mb_convert_encoding 來轉換編碼了.

問題:可是當 $keytitle  = '%D0%BE%C6%AC'; 時,檢測結果卻是UTF-8,這其實不算是bug,我們不應當過于依賴mb_detect_encoding,當字符串較短時,檢測結果產生偏差的可能性很大.

解決方法,代碼如下:

$encode = mb_detect_encoding($keytitle, array('ASCII','GB2312′,'GBK’,'UTF-8');

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平谷区| 瓮安县| 海南省| 宁陕县| 平顺县| 陇川县| 安宁市| 兴山县| 赤水市| 湟中县| 奉贤区| 滕州市| 隆回县| 湘潭县| 洪雅县| 韶关市| 双鸭山市| 巨鹿县| 子长县| 栖霞市| 合阳县| 景谷| 凯里市| 定边县| 武平县| 沭阳县| 罗江县| 壶关县| 藁城市| 鄄城县| 德阳市| 彰武县| 宜阳县| 邛崃市| 黄梅县| 大悟县| 恭城| 新密市| 大名县| 和林格尔县| 西丰县|