字号:小 中 大 修改 有没有直接判断文件或者一段字符串是什么编码的函数呢? 测试:将 text1.txt 保存成 ASCII编码, text2.txt 保存成 UTF-8 编码 <?php function chkCode($string){ $code = array('ASCII', 'GBK', 'UTF-8'); foreach($code as $c){ if( $string === iconv('UTF-8', $c, iconv($c, 'UTF-8', $string))){ return $c; } } return null; } $file = 'text1.txt'; echo chkCode(file_get_contents($file)); // 输出ASCII echo '<br />'; $file = 'text2.txt'; echo chkCode(file_get_contents($file)); // 输出UTF-8 echo '<br />'; ?> 今天在PHPCHINA的论坛上看到有人问如何在PHP程序中判断一个文本文件的编码格式,有些人说使用mb_detect_encoding函数来判断,但是经过楼主的测试无论文档采用什么编码格式,都只是显示UTF-8。我在PHP在线文档中查看到这个方法可以检测 function isUTF8($str) { if ($str === mb_convert_encoding(mb_convert_encoding($str, "UTF-32", "UTF-8"), "UTF-8", "UTF-32")) { return true; } else { return false; } } 这个方法里面并没有使用mb_detect_encoding方法,而是使用mb_convert_encoding方法将原来的字符串转换后进行判断得出结果。我测试过该方法可以用来判断字符串是否采用UTF8的编码! 2 顶一下 比如得到一个字符串,在PHP中我如何判断它是GB2312还是utf-8编码 已有 121 次阅读 2009-11-27 12:17 标签: 字符 PHP 编码 判断 网上搜索到了一个数据, 感觉挺好的, 想法很好 function getSafeCode($value) { $value_1= $value; $value_2 = @iconv("utf-8","gb2312",$value_1); $value_3 = @iconv("gb2312","utf-8",$value_2); if (strlen($value_1) == strlen($value_3)) { return $value_2; }else { return $value_1; } } 这个函数返回了gb2312的数据 整理一下昨天問大家關於PHP如何判斷是否為utf8編碼文件的方法,以下資料是用 google搜尋到的。 位置: http://ibtaiwan.com/ipb/index.php?showtopic=4035 由於utf8編碼有固定格式,其可能有2~4個字節,我們可以將每一個字節拆開判斷 這個函示僅判斷每個中文字的第一個字節,應該夠了。 請大家看看有沒有問題! //判斷字串是否為utf8 function is_utf8($str) { $i=0; $len = strlen($str); for($i=0;$i<$len;$i++) { $sbit = ord(substr($str,$i,1)); if($sbit < 128) { //本字節為英文字符,不與理會 }elseif($sbit > 191 && $sbit < 224) { //第一字節為落於192~223的utf8的中文字(表示該中文為由2個字節所組成utf8中文字),找下一個中文字 $i++; }elseif($sbit > 223 && $sbit < 240) { //第一字節為落於223~239的utf8的中文字(表示該中文為由3個字節所組成的utf8中文字),找下一個中文字 $i+=2; }elseif($sbit > 239 && $sbit < 248) { //第一字節為落於240~247的utf8的中文字(表示該中文為由4個字節所組成的utf8中文字),找下一個中文字 $i+=3; }else{ //第一字節為非的utf8的中文字 return 0; } } //檢查完整個字串都沒問體,代表這個字串是utf8中文字 return 1; } |
共0条信息 暂时没有信息 |