ホームページ  >  記事  >  バックエンド開発  >  PHPの学び方:PHPのiconv関数を詳しく解説

PHPの学び方:PHPのiconv関数を詳しく解説

WBOY
WBOYオリジナル
2016-06-23 13:54:00814ブラウズ

iconv 関数ライブラリは、さまざまな文字セット間の変換を完了することができ、PHP プログラミングに不可欠な基本関数ライブラリです。

使用法は次のとおりです:

$string = "親愛なる皆さん、Hu Wenfang のブログへようこそ。少しでもお役に立てれば幸いです!";

iconv("utf8","gbk",$string)/ /will 文字列エンコードは utf8 から gbk に変換されます。


は次のように展開されます:

echo $str= 'こんにちは、プログラマーの成長過程を記録する Hu Wenfang のブログへようこそ!'; ;
echo iconv('GB2312', 'UTF-8', $str); //文字列のエンコーディングを GB2312 から UTF-8 に変換します
echo '
';
echo iconv_substr($str, 1, 1, ' UTF-8'); //バイト数ではなく文字数で切り捨てる
print_r(iconv_get_encoding()) //現在のページのエンコード情報を取得する
echo iconv_strlen($str, 'UTF-8'); //固定エンコード文字列長の設定を取得します
//これも使用されます
$content = iconv("UTF-8","gbk//TRANSLIT",$content);

詳細なソース参照: http://www .jb51. net/article/14530.htm

注:

1. iconv は php のデフォルトの機能ではなく、デフォルトでインストールされるモジュールでもあります。使用する前にインストールする必要があります。

Windows2000+php の場合は、php.ini ファイルを変更して、extension=php_iconv.dll の前の「;」を削除できます。同時に、元の php インストール ファイル内の iconv.dll をコピーする必要があります。 winnt/system32 (DLL がこのディレクトリを指している場合、この手順はローカルで実行しませんでした)

Linux 環境では、静的インストールを使用し、構成時に追加の項目 --with-iconv を追加するだけです。phpinfo はそれを iconv の項目として確認できます。 。 (Linux7.3+Apache4.06+php4.3.2);

これで php での iconv の導入は完了です

2. iconv 関数を使用して、キャプチャされた utf-8 エンコードされたページを gb2312 に変換するだけです。 iconv 関数はキャプチャされたデータをトランスコードしますが、データは理由もなく小さくなります。その理由は次のとおりです:

string iconv (string in_charset, string out_charset, string str)

注: 変換先のエンコーディングを指定することに加えて、2 番目のパラメーターには 2 つのサフィックス (//TRANSLIT と // IGNORE) を追加することもできます。ここで、 //TRANSLIT は、直接変換できない文字を 1 つ以上の近似文字に自動的に変換します。 //IGNORE は、変換できない文字を無視します。デフォルトの効果は、最初の不正な文字から切り捨てることです。切り捨てられた場合は、もちろん文字数が少なくなります

iconv("UTF-8", "GB2312//IGNORE", $string) を変更して、変換できない文字を無視することができます。 :

PHP

の mb_convert_encoding 関数と iconv 関数の概要

mb_convert_encoding 関数は、iconv 関数と同様に、エンコーディングを変換するために使用されます。

通常、英語にはエンコードの問題はありませんが、中国語のデータのみにこの問題が発生します。たとえば、Zend Studio または Editplus を使用してプログラムを作成する場合、データをデータベースに入力する必要があり、データベース エンコードが utf8 である場合は、データをエンコードして変換する必要があります。そうでない場合は、データをエンコードして変換する必要があります。データベースに入るときに文字化けします。

mb_convert_encoding の公式の使用法を参照してください:

http://cn.php.net/manual/zh/function.mb-convert-encoding.php

GBK を UTF-8 に変換する

?php

ヘッダー(" content-Type: text/html; charset=Utf-8"); //文字エンコーディングを utp-8 に設定します

echo mb_convert_encoding("??My friends", "UTF-8", "GBK");

?>

Big5 への別の GB2312

< ?php
header("content-Type: text/html; charset=big5");
echo mb_convert_encoding("あなたは私の友達です", "big5", "GB2312 ");
?>
ただし、上記の機能を使用するには、インストールする必要がありますが、最初に mbstring 拡張ライブラリを有効にする必要があります。原則は同じで、php.ini を変更します。

PHP の別の関数 iconv も文字列エンコーディングの変換に使用され、その機能は上記の関数に似ています。

以下にいくつかの詳細な例があります:
iconv ? 文字列を要求された文字エンコーディングに変換します
(PHP 4 >= 4.0.5, PHP 5)
mb_convert_encoding ? (PHP 4 >= 4.0.6, PHP) 5)

使用法:

string mb_convert_encoding ( string str, string to_encoding [,mixed from_encoding] )

まず mbstring 拡張ライブラリを有効にする必要があります。php.ini で extension=php_mbstring.dll の前にある ; を削除します。複数の入力エンコーディングは内容に基づいて自動的に識別されますが、実行効率は iconv よりはるかに悪いため、なぜ mb_convert_encoding() 関数を説明する必要があるのでしょうか。答えは次のとおりです:


iconv は文字「?」を gb2312 に変換するときにエラーを起こすことがわかります。ignore パラメーターがないと、この文字に続くすべての文字列を保存できません。この「?」はどうやってもうまく変換できず出力できません。 また、mb_convert_encoding にはこのバグはありません

通常は、元のエンコーディングがわからない場合、または変換後に iconv が正常に表示されない場合にのみ mb_convert_encoding 関数を使用してください。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。