文件a.txt,用PHP如何判斷它的編碼是GBK還是UTF-8呢?
創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括龍里網(wǎng)站建設(shè)、龍里網(wǎng)站制作、龍里網(wǎng)頁制作以及龍里網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,龍里網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到龍里省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
1,重新認(rèn)識一下此問題,當(dāng)時(shí)版主回復(fù)的時(shí)候我就覺得mb函數(shù)里一定有這樣的功能,但今日研究了mb庫,并沒有這樣的功能。用mb_detect_encoding總是不準(zhǔn)確。
echo mb_detect_encoding(file_get_contents('a.txt'));
2,我在PHP的在線文檔中找了一個方法,可以解決你的問題,需要自己編寫一個函數(shù)來實(shí)現(xiàn)。
具體代碼如下:
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;
}
}
$content = file_get_contents("a.txt");
echo isUTF8($content);
3,經(jīng)測試,在編碼種類不多的情況下,2方法成功率還是挺高的。
function ChickC($str)
{
$array = array('ASCII','GBK','UTF-8');
foreach ($array as $value)
{
if ($str === mb_convert_encoding(mb_convert_encoding($str, "UTF-32", $value), $value, "UTF-32"))
return $value;
}
return false;
}
$encode?=?mb_detect_encoding($string,?array("ASCII",'UTF-8′,"GB2312′,"GBK",'BIG5′));?
echo?$encode;
可以用以上代碼判斷字符串格式,轉(zhuǎn)碼的話,使用iconv函數(shù)
php中有個函數(shù)可以用來檢查當(dāng)前字符串的編碼類型
mb_detect_encoding($str,array('ASSCII',''GB2312','UTF-8));
PHP用MBString庫的函數(shù)
$e=mb_detect_encoding($text, array('UTF-8', 'GBK'));
switch($e){
case 'UTF-8' : //如果是utf8編碼
break;
case ‘GBK’: //如果是gbk編碼
break
}