ホームページ > バックエンド開発 > PHPチュートリアル > PHP は文字列エンコーディング関数 mb_detect_encoding を自動的に取得します。

PHP は文字列エンコーディング関数 mb_detect_encoding を自動的に取得します。

WBOY
リリース: 2016-06-20 13:02:23
オリジナル
879 人が閲覧しました

エンコーディング識別のために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 であるかどうかを検出し、UTF-8 である場合は GBK に変換することです。
ただし、$keytitle = “%D0%BE%C6%AC” の場合は、検出結果は UTF-8 です。このバグは実際にはバグではありません。プログラムを作成する際には、文字列が短い場合、検出結果が偏る可能性があります。
それを解決するにはどうすればよいでしょうか?

$encode = mb_detect_encoding($keytitle, array('ASCII','GB2312′,'GBK','UTF-8');
ログイン後にコピー


3 つのパラメーターは、検出される入力変数、エンコード方式の検出順序 (一度 true になると、後で自動的に無視されます)、および厳密モード
です。 最大の可能性が最初に配置されるようにエンコード検出の順序を調整すると、誤った変換の可能性が減ります。
通常、gb2312 を最初にソートする必要があります。GBK と UTF-8 がある場合は、よく使用されるものを最初にソートする必要があります。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート