PHPのiconv()
とmb_convert_encoding()
の違いは何ですか?より良い、より速いなどを実行しますか(例えば、特定のエンコーディングで)?どのような状況で、一方が他方よりも優先されますか?
ここに私がすでに知っていると思うものがあります:
iconv()
mb_convert_encoding()
HTML-ENTITIES
を処理し、Web 16進コードとの間で変換できます。他に違いはありますか?
iconv()
は、PHPが実行されているシステムCライブラリにあるiconv()
関数の単なるラッパーです(PHPが_でビルドされている場合を除く)GNU iconv。この場合、GNU iconvが使用されます)。したがって、iconv()
のパフォーマンスと機能は、PHPを実行している場所とその構築方法に依存します。
一方、mb_convert_encoding()
の実装は、PHP(モジュール)ソースに含まれています。実際の変換を処理するlibmbflと呼ばれるライブラリが含まれています。したがって、PHPを実行している場所に関係なく同じように動作します。サポートされているエンコードのリストはここにあります: http://php.net/manual/en/mbstring.encodings.php
したがって、要約すると、異なるプラットフォームをサポートする場合は、mb_convert_encoding()
を使用する方が信頼性が高いと言えます。ただし、(たとえば)Linuxでiconv()
を使用すると、より多くのエンコードがサポートされます(_iconv --list
_を参照)。
関数の相対的なパフォーマンスは、明らかに特定のiconv()
実装にも依存します。
PHP 5.4にバグがあります。時々、iconvは 'similar' charの文字列を返す代わりにnull文字列を返します。
したがって、mb_convert_encodingを使用する必要があります。