本文目錄一覽:
php有沒有查看當前的編碼方式的方法
編碼問題是解碼者決定的,數據本身並不指明編碼方式,而是讀數據的解碼者選擇自己的解碼方式
此處,php程序是數據本身,php解釋器是解碼者本身,
php解釋器對 php程序的編碼方式 並不應人類對php程序的編碼方式理解不同而轉移
因此,理論上不存在獲取當前數據編碼方式的 接口,只要當時的編碼者(譬如人類)顯示指明編碼方式,
解碼者(譬如php解釋器)方可獲知
即使在解析以後再人類看來是一片亂碼, PHP認為一切都是正確的.
當然從前端獲取來的字符例外
如果不清楚字符串的編碼格式的話,就可以將這段字符這樣檢查:
$encode = mb_detect_encoding($string, array(“ASCII”,’UTF-8′,”GB2312′,”GBK”,’BIG5′));
echo $encode;
這樣就能知道它是什麼編碼的了。後續操作還可以為其轉碼:
if ($encode == 「UTF-8″){
$string = iconv(“UTF-8″,”GBK”,$string);
}
php 怎樣判斷字符串是哪種編碼
php中有個函數可以用來檢查當前字符串的編碼類型
mb_detect_encoding($str,array(‘ASSCII’,”GB2312′,’UTF-8));
PHP用MBString庫的函數
$e=mb_detect_encoding($text, array(‘UTF-8’, ‘GBK’));
switch($e){
case ‘UTF-8’ : //如果是utf8編碼
break;
case 『GBK』: //如果是gbk編碼
break
}
用PHP如何判斷一個文件的編碼
文件a.txt,用PHP如何判斷它的編碼是GBK還是UTF-8呢?
1,重新認識一下此問題,當時版主回復的時候我就覺得mb函數里一定有這樣的功能,但今日研究了mb庫,並沒有這樣的功能。用mb_detect_encoding總是不準確。
echo mb_detect_encoding(file_get_contents(‘a.txt’));
2,我在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;
}
}
$content = file_get_contents(“a.txt”);
echo isUTF8($content);
3,經測試,在編碼種類不多的情況下,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;
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/159554.html