ホームページ >バックエンド開発 >PHPチュートリアル >PHP はデータのエンコーディング タイプを検出します

PHP はデータのエンコーディング タイプを検出します

WBOY
WBOYオリジナル
2016-06-13 13:20:44718ブラウズ

php 检测文件编码类型
define ('UTF32_BIG_ENDIAN_BOM' , chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF));
define ('UTF32_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE) . chr(0x00) . chr(0x00));
define ('UTF16_BIG_ENDIAN_BOM' , chr(0xFE) . chr(0xFF));
define ('UTF16_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE));
定義 ('UTF8_BOM' , chr(0xEF) . chr(0xBB) . chr(0xBF));

function detect_utf_encoding($text) {
$first2 = substr($text, 0, 2) ;
$first3 = substr($text, 0, 3);
$first4 = substr($text, 0, 3);

if ($first3 == UTF8_BOM) return 'UTF -8';
elseif ($first4 == UTF32_BIG_ENDIAN_BOM) return 'UTF-32BE';
elseif ($first4 == UTF32_LITTLE_ENDIAN_BOM) return 'UTF-32LE';
elseif ($first2 == UTF16_BIG_ENDIAN_BOM) ) return 'UTF-16BE';
elseif ($first2 == UTF16_LITTLE_ENDIAN_BOM) return 'UTF-16LE';
}

function getFileEncoding($str){
$encoding=mb_detect_encoding ($str);
if(empty($encoding)){
$encoding=detect_utf_encoding($str);
}
return $encoding;
}
$file = 'text1.txt';
echo getFileEncoding(file_get_contents($file));  // 出力 ASCII
echo '';

$file = 'text2.txt';
echo getFileEncoding(file_get_contents($file));  // 出力UTF-8
echo '';
$file = 'text3.txt';
echo getFileEncoding(file_get_contents($file));  // 输出UTF-16LE
エコー '';

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。