PHP识别文件编码有多种方式,例如可以用mb_detect_encoding函数。
以下是识别文件是否是GBK或者UTF8的函数,通常情况下,如果isGBK返回true,那么isUTF8肯定是返回false。
function isGBK($str)
{
if(mb_detect_encoding($str, 'GBK', true)===false){
return false;
}
return true;
}
function isUTF8($str)
{
if(mb_detect_encoding($str, 'UTF-8', true)===false){
return false;
}
return true;
}
但也有例外,例如一个文件的格式是UTF-8,但文件内容里都是英文或数字,没有出现汉字的情况,这时候,这两个函数都会返回true。
针对这种情况,为了达到识别效果,可以通过在字符串后面加入一个中文全角空格,这样就可以准确判断了。
if(isGBK($str) && isUTF8($str)){
$str.=" ";
}