For file encoding detection, Baidu has written a detection function, but it does not work. The following describes how to check file encoding, baidu is a hacker, but it is useless,
Many people suggest mb_detect_encoding detection, but I don't know why I didn't succeed, and I didn't output anything,
I saw someone wrote an enhanced version, and I decided to ignore it with BOM. this is totally unreliable,
Finally, according to the example below the mb_detect_encoding function in the PHP manual, I wrote a detection function,
It also includes functions that automatically detect the encoding and read the file according to the instruction code,
The source code is presented.
I tried to write the online method without using it. maybe the environment is different.
So if it's useless, don't spray me, I just want to share ideas ,,
The code is as follows:
/**
* Check the file encoding.
* @ Param string $ file path
* @ Return string | null returns the encoding name or null.
*/
Function detect_encoding ($ file ){
$ List = array ('gbk', 'utf-8', 'utf-16le', 'utf-16BE ', 'ISO-8859-1 ');
$ Str = file_get_contents ($ file );
Foreach ($ list as $ item ){
$ Tmp = mb_convert_encoding ($ str, $ item, $ item );
If (md5 ($ tmp) = md5 ($ str )){
Return $ item;
}
}
Return null;
}
/**
* Automatically parse the encoding to read the file
* @ Param string $ file path
* @ Param string $ charset read encoding
* @ Return string returns the read content
*/
Function auto_read ($ file, $ charset = 'utf-8 '){
$ List = array ('gbk', 'utf-8', 'utf-16le', 'utf-16BE ', 'ISO-8859-1 ');
$ Str = file_get_contents ($ file );
Foreach ($ list as $ item ){
$ Tmp = mb_convert_encoding ($ str, $ item, $ item );
If (md5 ($ tmp) = md5 ($ str )){
Return mb_convert_encoding ($ str, $ charset, $ item );
}
}
Return "";
}