PHPでの文字セット変換、文字セット変換iconv関数の使い方のまとめ
iconv 関数ライブラリは、さまざまな文字セット間の変換を完了することができ、PHP プログラミングに不可欠な基本関数ライブラリです。
使い方は以下の通りです:
コードをコピーします コードは次のとおりです:
$string = "バンケ ホームへようこそ!";
iconv("utf8","gbk",$string)//文字列エンコーディングを utf8 から gbk に変換します。
は次のように展開されます:
コードをコピーします コードは次のとおりです:
echo $str= 'バンケ ホームへようこそ!';
エコー '
';
echo iconv('GB2312', 'UTF-8', $str); //文字列エンコーディングを GB2312 から UTF-8 に変換します
エコー '
';
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);
備考:
1. 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);
これでphpでのiconvの紹介は終わりです
2. iconv 関数を使用して、キャプチャした utf-8 でエンコードされたページを gb2312 に変換します。iconv 関数を使用してキャプチャしたデータをトランスコードするだけで、理由もなくデータが少なくなることがわかりました。その理由は次のとおりです:
コードをコピーします コードは次のとおりです:
string iconv (string in_charset、string out_charset、string str)
注: 変換先のエンコーディングの指定に加えて、2 番目のパラメーターでは、//TRANSLIT と //IGNORE の 2 つの接尾辞を追加することもできます。//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の使用方法については、公式Webサイトをご覧ください:
http://cn.php.net/manual/zh/function.mb-convert-encoding.php
GBK を UTF-8 に作成する
コードをコピーします コードは次のとおりです:
header("content-Type: text/html; charset=Utf-8"); //文字コードをutp-8に設定します
echo mb_convert_encoding("My", "UTF-8", "GBK");
?>
もう一つの GB2312 が Big5 に
コードをコピーします コードは次のとおりです:
header("content-Type: text/html; charset=big5");
echo mb_convert_encoding("フレンド", "big5", "GB2312");
?>
ただし、上記の機能を使用するには、インストールする必要がありますが、原則は同じで、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 [,混合 from_encoding] )
まず mbstring 拡張ライブラリを有効にし、php.ini の extension=php_mbstring.dll の前にある ; を削除する必要があります。
mb_convert_encoding は複数の入力エンコーディングを指定でき、内容に基づいて自動的に識別しますが、実行効率は iconv よりもはるかに悪いため、なぜこの mb_convert_encoding() 関数を説明する必要があるのでしょうか。答えは以下の通りです:
iconv は文字「-」を gb2312 に変換するときにエラーが発生することがわかりました。ignore パラメーターがないと、この文字に続くすべての文字列を保存できません。この「-」はどうやってもうまく変換できず出力できません。 なお、mb_convert_encoding にはこのバグはありません
通常は、iconv を使用します。mb_convert_encoding 関数は、元のエンコーディングが特定できない場合、または変換後に iconv が正常に表示できない場合にのみ使用してください。
gbk形式で保存しても表示されません
iconv('gbk','utf-8',$tomename);
こんな感じで書いてみます
utf-8の後のIGMOREはどういう意味ですか?質問してください
http://www.bkjia.com/PHPjc/892263.html
www.bkjia.comtruehttp://www.bkjia.com/PHPjc/892263.html技術記事 PHP での文字セット変換 iconv 関数の使用法の概要 文字セット変換 iconv iconv 関数ライブラリは、さまざまな文字セット間の変換を完了することができ、PHP プログラミングに不可欠な基本関数ライブラリです。 使い方は...