エンコーディング識別のためにphpのmb_detect_encoding関数を使用する場合、多くの人がGB2312とUTF-8、またはUTF-8とGBKなどの間違ったエンコーディングの問題に遭遇したことがあります(ここでは主にcp936の判断のためです)と言われています文字が短いため、mb_detect_encoding が誤判定を引き起こす可能性があるとオンラインで報告されています。
例:
コードをコピー コードは次のとおりです:
$encode = mb_detect_encoding($keytitle, array("ASCII",'UTF-8',"GB2312',"GBK",' BIG5')) ;
if ($encode == “UTF-8″){
$keytitle = iconv("UTF-8″,"GBK",$keytitle);
}
このコードの機能は次のとおりです。文字列を検出するには、エンコーディングが UTF-8 ですか? その場合は、GBK に変換します。ただし、$keytitle = “%D0%BE%C6%AC”; の場合、このバグは実際には UTF-8 ではありません。プログラムを作成するときは、mb_detect_encoding に依存しすぎないようにしてください。文字列が短い場合、検出結果が偏る可能性があります。解決方法は次のとおりです。
コードは次のとおりです: $encode. = mb_detect_encoding($keytitle, array('ASCII','GB2312','GBK','UTF-8');
3 つのパラメーターは次のとおりです: 、エンコード方式の検出順序 (True になると、後で自動的に無視されます)、厳密モード
最大の可能性を最初に配置してエンコード検出の順序を調整し、誤った変換の可能性を減らします
一般的に、gb2312 は次のようになります。 GBKとUTF-8がある場合は、よく使うものを前に並べる必要があります
。
http://www.bkjia.com/PHPjc/323437.html
www.bkjia.com
truehttp://www.bkjia.com/PHPjc/323437.html技術記事エンコーディングの識別に php の mb_detect_encoding 関数を使用する場合、多くの人が、GB2312 と UTF-8、または UTF-8 と GBK などの間違ったエンコーディングの問題に遭遇しました (ここでは主に... )