php文字符号化変換関数iconv mb_convert_encoding比較

1953 ワード

PHPを使用して文字列を処理する場合、文字コード変換の問題によく遭遇しますが、iconv変換に失敗したことがありますか?
问题を発见する时、ネット上で探して、やっとiconvがもとはバグがあることを発见して、いくつかの辺鄙な字に出会って転换することができなくて、もちろん第2のパラメータを配置する时、少しデフォルトの欠陥を补うことができて、転换することができないのは遮断で、用法は以下の通りです
iconv(“UTF-8″,”GB2312//IGNORE”,$data)  ;

このように辺鄙な字の変換に失敗すると、失敗を無視して次の内容を変換し続けるのが問題を解決する一つの方法ですが、変換の成功率を確保するために、別の変換関数(mb_convert_encoding)を使って、資料を調べてネット上で言えば、この関数の効率はあまり高くなく、またこの関数は3番目のパラメータを省略することができます.コンテンツコードを自動的に認識しますが、使わないほうがいいです.効率に影響します.注意が必要な場合はmb_convert_encodingはiconvパラメータと順序が異なりますので、注意してください.
2つの関数の簡単な使い方を添付します.
iconv
string iconv ( string $in_charset , string $out_charset , string $str )
最初のパラメータ:コンテンツ元の符号化
2番目のパラメータ:ターゲットエンコーディング
3番目のパラメータ:回転する文字列
関数は文字列を返します
<?php

$instr = ‘  ’;

// GBK UTF-8

$outstr = iconv(‘GBK’,'UTF-8′,$instr);

?>

mb_convert_encoding
string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )
最初のパラメータ:処理する文字列
2番目のパラメータ:ターゲットエンコーディング
3番目のパラメータ:コンテンツの元の符号化
<?php



$instr = '  ';



// GBK UTF-8



$outstr = mb_convert_encoding($instr,'UTF-8','GBK',);

?>

トランスコード問題でmb_を採用convert_encodingは比較的安全です.