PHP では、通常、iconv と mb_convert_encoding を使用して文字エンコーディングを変換しますが、mb_convert_encoding は変換パフォーマンスの点で iconv よりもはるかに劣ります。
文字列 iconv (文字列 in_charset、文字列 out_charset、文字列 str)
注: 変換先のエンコーディングの指定に加えて、2 番目のパラメーターでは、//TRANSLIT と //IGNORE の 2 つの接尾辞を追加することもできます。//TRANSLIT は、直接変換できない文字を 1 つ以上の近似文字に自動的に変換します。 //IGNORE は変換できない文字を無視し、デフォルトの効果は最初の不正な文字から切り捨てられます。
変換された文字列を返すか、失敗した場合は FALSE を返します。
string mb_convert_encoding ( string str, string to_encoding [,混合 from_encoding] )
まず mbstring 拡張ライブラリを有効にし、php.ini の extension=php_mbstring.dll の前にある ; を削除する必要があります。
mb_convert_encoding は複数の入力エンコーディングを指定できますが、内容に基づいて自動的に識別されますが、実行効率は iconv よりもはるかに悪くなります。
使用:
iconv が文字「-」を gb2312 に変換するときにエラーが発生することが判明しました。ignore パラメータがないと、この文字に続くすべての文字列を保存できません。この「-」はどうやってもうまく変換できず出力できません。 なお、mb_convert_encoding にはこのバグはありません
通常は、iconv を使用します。mb_convert_encoding 関数は、元のエンコーディングが特定できない場合、または変換後に iconv が正常に表示できない場合にのみ使用してください。
コードは次のとおりです
*入力文字列のエンコードタイプを自動的に判断できます。UTF-8の場合は変換する必要はありません。それ以外の場合はUTF-8文字列に変換されます
*サポートされている文字エンコーディングの種類は、utf-8、gbk、gb2312 です |
コードをコピー
$cha=mb_detect_encoding($str); | エコー $cha;?> |
gb2312のページで入力したのですが、出力結果がUTF-8になってしまい非常におかしく、原因はまだ分かりません。 一律にUTF-8エンコーディングに変換したい場合は、以下の方法を使用してください |
コードをコピー
$cha=mb_detect_encoding($str); | $s = iconv($cha,"UTF-8",$str);var_dump($s); | ?>|||||||||||||||||||
返された結果:
結果は次のとおりです: 問題 3: iconv の問題、変換された文字列、最初のバイトのエンコーディングが特定の数値より大きい場合、空が返されます。 例:
戻る mb_convert_encodingの使用方法については、公式Webサイトをご覧ください: http://cn.php.net/manual/en/function.mb-convert-encoding.php PHP の別の関数 iconv も文字列エンコーディングの変換に使用され、その関数は上記の関数と似ています。 以下にいくつかの詳細な例があります: 使用法:
変換された文字列を返すか、失敗した場合は FALSE を返します。
通常の状況では、iconv を使用します。mb_convert_encoding 関数は、元のエンコーディングが特定できない場合、または変換後に iconv が正常に表示されない場合にのみ使用してください。
$str = mb_convert_encoding($str, “EUC-JP”, “auto”); コードは次のとおりです
コードは次のとおりです コードをコピー
true 声明: この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。 |