PHP 関数ライブラリには、iconv() という関数があります。iconv 関数ライブラリは、さまざまな文字セット間の変換を完了することができ、PHP プログラミングに不可欠な基本関数ライブラリです。
私は現在泥棒プログラムに取り組んでおり、キャプチャされた utf-8 でエンコードされたページを gb2312 に変換するために iconv 関数を使用する必要があります。キャプチャされたデータを iconv 関数を使用してトランスコードするだけでデータが削減されることがわかりました。理由もなく。 しばらく落ち込んだ後、インターネット上の情報を調べたところ、これは iconv 関数のバグであることがわかりました。 iconv は文字「-」を gb2312 に変換するときにエラーになります。
この機能の使い方を見てみましょう。
最も単純なアプリケーションは、gb2312 を utf-8 に置き換えます:
リーリー$text=iconv("UTF-8", "GB2312", $text) を使用する過程で、英語名に「—」、「.」などの特殊文字が含まれている場合は、変換します。彼らは壊れた。これらの文字の後のテキストはそれ以上変換できません。
この問題を解決するには、次のコードを使用できます:
リーリーそのとおりです。とても簡単です。gb2312 を使用せず、GBK として記述するだけです。
別の方法もあります。次のように、2 番目のパラメーターに //IGNORE を追加してエラーを無視します。 リーリー
これら 2 つの方法を具体的に比較することはできません。最初の方法 (gb2312 ではなく GBK) の方が優れていると思います。PHP マニュアルの iconv() の手順:
リーリー
この関数を使用して文字列エンコーディングを変換する場合、utf-8 を gb2312 に変換すると文字列が切り詰められる可能性があることに注意してください。現時点では、次の方法を使用して解決できます:リーリー
つまり、2 番目のパラメーターに赤い部分を追加します。これは、ソース エンコーディングに一致する文字がターゲット エンコーディングで見つからない場合、類似した文字が変換のために選択されることを意味します。ここで //IGNORE パラメーターを使用して、変換できない文字を無視することもできます。ignore は、変換中にエラーを無視することを意味します。ignore パラメーターがないと、この文字に続くすべての文字列を保存できません。
iconv は php のデフォルトの機能ではなく、デフォルトでインストールされるモジュールでもあります。使用する前にインストールする必要があります。
Windows2000+phpの場合は、php.iniファイルを変更して、extension=php_iconv.dllの前の「;」を削除できます。同時に、元のphpインストールファイル内のiconv.dllをコピーする必要があります。 winnt/system32 (DLL がこのディレクトリを指している場合)。 Linux 環境では、静的インストールを使用して、configure 時に追加項目 --with-iconv を追加するだけです。iconv 項目は phpinfo に表示されます。 (Linux7.3+Apache4.06+php4.3.2)。
mb_convert_encoding と iconv 関数の概要
GBK を UTF-8 に作成します:
リーリー
Big5 への別の GB2312:リーリー
ただし、上記の機能を使用するには、まずmbstring拡張ライブラリをインストールして有効にする必要があります。string mb_convert_encoding (string str, string to_encoding [,mixed from_encoding]) mb_convert_encoding を削除するには、まず mbstring 拡張ライブラリを追加する必要があります。エンコードされており、内容に基づいて自動認識されますが、実行効率は iconv;
よりもはるかに悪くなります。
string iconv (string in_charset, string out_charset, string str) 注: 変換先のエンコーディングを指定することに加えて、2 番目のパラメーターで 2 つのサフィックスを追加することもできます: //TRANSLIT と //IGNORE。ここで、//TRANSLIT は自動的に変換されます。 //IGNORE は、1 つ以上の近似文字に直接変換できない文字を無視し、デフォルトの効果として、最初の不正な文字から切り捨てられます。通常は、iconv を使用します。mb_convert_encoding 関数は、元のエンコーディングが特定できない場合、または変換後に iconv が正常に表示されない場合にのみ使用してください。
れーれー