原理は非常に単純です。中国語の gb2312/gbk は 2 バイトであり、この 2 バイトには値の範囲があるのに対し、UTF-8 の中国語文字は 3 バイトであり、各バイトにも値の範囲があるからです。エンコードの状況に関係なく、英語は 128 未満であり、占有するのは 1 バイトのみです (全角を除く)。
ファイル形式でのエンコードチェックであれば、utf-8のBOM情報を直接確認することもできます。この関数は文字列のチェックとトランスコードに使用されます。
コードをコピーします コードは次のとおりです:
functionsafeEncoding($string,$outEncoding ='UTF-8')
{
$encoding = "UTF-8";
for($ i=0;$i {
//最初のバイトが渡されます
$char = $string{++$i};
if((ord($char)&128)==128)
// 2 番目のバイトが渡されます $char = $string{++$i};
if((ord($char)&128)==128 )$ encoding = "utf-8";
$string を返す;
else
return iconv($encoding,$outEncoding,$string)?>
http://www.bkjia.com/PHPjc/327896.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/327896.html
技術記事
原理は非常に単純です。中国語の gb2312/gbk は 2 バイトであり、この 2 バイトには値の範囲があるのに対し、UTF-8 の中国語文字は 3 バイトであり、各バイトにも値の範囲があるからです。そして英語は関係ありません...