iconv関数ライブラリは、様々な文字セット間の変換を完了することができ、PHPプログラミングにおいて欠かせない基本的な関数ライブラリです。この記事の内容はインターネット上の他のリソースに基づいており、必要な友人はそれを私自身の実践と組み合わせて参照できます。
今日、オンラインで論文を推敲していたらiconv関数に出会いました。学びましょう
?
1
2
3
4header('Content-Type: application/vnd.ms-excel;charset=UTF-8"');
$name=iconv('utf-8', 'gb2312', $data['年'].'年、No.'.$data['期間'].'対応');
header('Content-Disposition:attachment;filename="' . $name . '.xls"');
header('Cache-Control: max-age=0');
このコードの意味は、utf-8形式をgb2312形式に変換して、$nameに代入するというものです。 このようにして、Excelファイルの名前をエクスポートすると、$nameという中国語名になります。 。
この機能の詳細と拡張的な使い方は以下の通りです
?
1iconv("UTF-8","GB2312//IGNORE",$data)
Ignore は、変換中にエラーを無視することを意味します。ignore パラメーターがないと、この文字に続くすべての文字列を保存できません。
php5にはiconv()関数が組み込まれています、ありがとうございます
。例:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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);
?>
iconvはPHPのデフォルトの機能ではなく、デフォルトでインストールされるモジュールでもあります。使用する前にインストールする必要があります。
Windows2000+phpの場合は、php.iniファイルを変更して、extension=php_iconv.dllの前の「;」を削除することができます。同時に、元のphpインストールファイル内のiconv.dllをコピーする必要があります。 winnt/system32 (DLL がこのディレクトリを指している場合)
Linux 環境では、静的インストールを使用して、configure で iconv 項目を確認できるときに項目 --with-iconv を追加するだけです。 (Linux7.3+Apache4.06+php4.3.2)、
ダウンロード: ftp://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.8.tar.gz
インストール:
?
1
2
3
4
5#cp libiconv-1.8.tar.gz /usr/local/src
#tar zxvf lib*
#./configure --prefix=/usr/local/libiconv
#作る
#make install
phpをコンパイルする
#./configure --prefix=/usr/local/php4.3.2 --with-iconv=/usr/local/libiconv/
簡単な使用例:
?
1
2
3
echo iconv("gb2312","ISO-8859-1","we");
?>
PHPのmb_convert_encodingとiconv関数の紹介
エンコーディングの変換にはmb_convert_encoding関数を使用します。私はプログラムコーディングの概念を理解していませんでしたが、今では少し理解できるようになりました。
しかし、英語には一般にエンコードの問題はなく、中国語のデータだけがこの問題を抱えます。たとえば、Zend Studio または Editplus を使用してプログラムを作成する場合、データをデータベースに入力する必要があり、データベース エンコードが utf8 である場合は、データをエンコードして変換する必要があります。そうでない場合は、データをエンコードして変換する必要があります。データベースに入るときに文字化けします。
mb_convert_encodingの使い方については公式サイトをご覧ください:
http://cn.php.net/manual/zh/function.mb-convert-encoding.php
GBK を UTF-8 に作成する
?
1
2
3
4
header("content-Type: text/html; charset=Utf-8");
echo mb_convert_encoding("あなたは私の友達です", "UTF-8", "GBK");
?>
またGB2312からBig5へ
?
1
2
3
4
header("content-Type: text/html; charset=big5");
echo mb_convert_encoding("あなたは私の友達です", "big5", "GB2312");
?>
ただし、上記の機能を使用するには、まずmbstring拡張ライブラリをインストールして有効にする必要があります。
PHP の別の関数 iconv も文字列エンコーディングの変換に使用され、その機能は上記の関数と似ています。
以下に詳細な例をいくつか示します:
?
1
2
3
4iconv — 文字列を要求された文字エンコーディングに変換します
(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の前にある;を削除する必要があります
mb_convert_encoding は複数の入力エンコーディングを指定でき、内容に基づいて自動的に識別されますが、実行効率は iconv; よりもはるかに悪くなります。
string iconv (string in_charset, string out_charset, string str)注: 変換先のエンコーディングを指定することに加えて、2 番目のパラメーターでは、//TRANSLIT と //IGNORE の 2 つの接尾辞を追加することもできます。//TRANSLIT は、直接変換できない文字を 1 つ以上の近似文字に自動的に変換します。 , //IGNORE は変換できない文字を無視し、デフォルトの効果は最初の不正な文字から切り捨てられます。
変換された文字列を返すか、失敗した場合は FALSE を返します。
使用法:
iconv が文字「-」を gb2312 に変換するときにエラーが発生することが判明しました。ignore パラメータがないと、この文字に続くすべての文字列を保存できません。この「-」はどうやってもうまく変換できず出力できません。 なお、mb_convert_encoding にはこのバグはありません
通常はiconvを使用します。mb_convert_encoding関数は、元のエンコードが不明な場合、または変換後にiconvが正常に表示できない場合にのみ使用してください。
from_encoding は、変換前の文字コード名で指定します。配列または文字列 - カンマ区切りの列挙リストが可能です。指定されていない場合は、内部エンコーディングが使用されます。/* JIS、eucjp-win、sjis-win からエンコードを自動検出し、str を UCS-2LE に変換します */
$str = mb_convert_encoding($str, “UCS-2LE”, “JIS, eucjp-win, sjis-win”);
/* 「auto」は「ASCII,JIS,UTF-8,EUC-JP,SJIS」に展開されます */
$str = mb_convert_encoding($str, “EUC-JP”, “auto”);
例:
?
1
2$content = iconv(”GBK”, “UTF-8”, $content);
$content = mb_convert_encoding($content, "UTF-8","GBK");
phpでiconv関数を使用する際に見落としやすいパラメータ
今日、クロールされたコンテンツを処理しているときに、iconv を使用してエンコード変換を行うと、結果が中断されることがわかりました。文字セットに問題があるのではないかと考えました。マニュアルを確認したところ、iconv の機能は 3 つのパラメータだけでは機能しないようでした。その後、インターネットで調べたところ、できると書いてありましたが、その実装方法には非常に驚きました。 , 英語の説明には、ターゲットコードの最後に「TRANSLIT」というマークを追加できるとありました。最初に「/」を追加する必要があることがわかりました。 「こんなデザインがあるなんて本当に憂鬱です
」プロトタイプ: $txtContent = iconv("utf-8",'GBK',$txtContent);
特殊パラメータ: iconv("UTF-8","GB2312//IGNORE",$data)
オプションの 2 つの補助パラメータ: TRANSLIT と IGNORE (IGNORE は、変換できないものに遭遇した場合にスキップすることを意味します)。
以上がこの記事の全内容ですが、皆さんに気に入っていただければ幸いです。
http://www.bkjia.com/PHPjc/1025899.html
www.bkjia.com