PHPを使用して文字列を処理する場合、文字エンコーディングの変換の問題によく遭遇します。iconv変換の失敗に遭遇したことがありますか?
問題を見つけたとき、オンラインで検索したところ、iconv にはいくつかのまれな単語を変換できないバグがあることがわかりました。変換できないので切り捨てられないことを確認します。 使い方は以下の通りです
iconv(“UTF-8″,”GB2312//IGNORE”,$data) ;
まれに単語の変換に失敗した場合、その失敗を無視して次のコンテンツの変換を続行します。ただし、変換の成功率を確保するために、別の変換関数を使用できます。 mb_convert_encoding)、チェック インターネット上の情報によると、この関数はあまり効率的ではありません。また、この関数は 3 番目のパラメータを省略してコンテンツのエンコーディングを自動的に識別することもできます。これは効率に影響を与えるため、使用しない方がよいでしょう。 mb_convert_encoding と iconv パラメータの順序が異なることにも注意する必要があります。
2 つの関数の簡単な使用法を添付します:
文字列iconv (文字列$in_charset、文字列$out_charset、文字列$str)
最初のパラメータ: コンテンツの元のエンコーディング
2番目のパラメータ: ターゲットエンコーディング
3番目のパラメータ: 変換される文字列
関数は文字列を返します
$instr = 'テスト';
// GBK から UTF-8 へ
$outstr = iconv('GBK','UTF-8',$instr);
?>
個人的には、トランスコーディングの問題が発生した場合の安全性を高めるために、mb_convert_encoding を使用することをお勧めします。