PHPにおけるiconv関数の知識のまとめ

5277 ワード

今日論文のオンラインを修正したとき、iconvという関数に出会った.勉強して

header('Content-Type: application/vnd.ms-excel;charset=UTF-8"');
$name=iconv('utf-8', 'gb2312', $data['year'].' , '.$data['period'].'    ');
header('Content-Disposition: attachment;filename="' . $name . '.xls"');
header('Cache-Control: max-age=0');


このコードの意味は、utf-8フォーマットをgb 2312フォーマットに変換し、$nameに値を付けてexcelファイルの名前をエクスポートするとき、中国語の$nameの名前です.下はこの関数の詳細と延長の使い方についてです

iconv("UTF-8","GB2312//IGNORE",$data)


ignoreは変換時のエラーを無視することを意味し、ignoreパラメータがなければ、その文字の後ろの文字列はすべて保存できません.
このiconv()という関数はphp 5に内蔵されている.ありがとう.
例:

 ';
 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); ?>

iconvはphpのデフォルト関数ではなく、デフォルトでインストールされているモジュールです.インストールが必要です.
Windows 2000+phpの場合はphpを変更できます.iniファイル、extension=php_iconv.dll前の";"削除すると同時に、元のphpインストールファイルの下のiconvをcopyします.dllはwint/system 32の下にあります(dllがこのディレクトリを指している場合)
linux環境では、静的にインストールする方法でconfigure時に1つ--with-iconvを追加すればいいので、phpinfoでiconvの項目が見えます.(Linux7.3+Apache4.06+php4.3.2),
ダウンロード:ftp://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.8.tar.gzインストール:

#cp libiconv-1.8.tar.gz /usr/local/src
#tar zxvf lib*
#./configure --prefix=/usr/local/libiconv
#make
#make install

コンパイルphp
#./configure --prefix=/usr/local/php4.3.2 --with-iconv=/usr/local/libiconv/
使用する簡単な例:




PHPのmb_convert_Encodingとiconv関数の紹介
mb_convert_encodingという関数は符号化を変換するために使用されます.もともとプログラムコードという概念は理解されていませんでしたが、今は少し理解しているようです.しかし、英語にはコーディングの問題はありません.中国語のデータだけがこの問題があります.例えばZend StudioやEditplusでプログラムを書くときはgbk符号化を使いますが、データがデータベースに入る必要があり、データベースの符号化がutf 8の場合は、データを符号化変換しなければなりません.そうしないと、データベースに入ると文字化けになります.
mb_convert_encodingの使い方は公式を参照してください.http://cn.php.net/manual/zh/function.mb-convert-encoding.php
GBK To UTF-8を作る

< ?php 
 header("content-Type: text/html; charset=Utf-8"); 
 echo mb_convert_encoding("���S    ", "UTF-8", "GBK"); 
?> 


GB 2312 To Big 5をもう一つ

< ?php 
 header("content-Type: text/html; charset=big5"); 
 echo mb_convert_encoding("      ", "big5", "GB2312"); 
?> 


ただし、上記の関数を使用するにはインストールが必要ですが、enable mbstring拡張ライブラリが必要です.
PHPのもう一つの関数iconvも文字列符号化を変換するために用いられ,上の関数機能と似ている.
以下に詳細な例を示します.

iconv ― Convert string to requested character encoding
(PHP 4 >= 4.0.5, PHP 5)
mb_convert_encoding ― Convert character encoding
(PHP 4 >= 4.0.6, PHP 5)

使用方法:
string mb_convert_encoding(string str,string to_encoding[,mixed from_encoding])は、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は変換できない文字を無視します.デフォルトの効果は、最初の不正な文字から切断されます.Returns the converted string or FALSE on failure.
次の操作を行います.
iconvは、gb 2312に変換中にエラーが発生し、ignoreパラメータがなければ、その文字の後ろの文字列はすべて保存できません.いずれにしても、この「――」は変換に成功せず、出力できません.さらにmb_convert_encodingにはこのバグはありません
一般的にiconvを使用する場合、mb_は、元の符号化がどのような符号化であるか、またはiconv変換後に正常に表示されない場合にのみ使用されます.convert_Encoding関数
 from_encoding is specified by character code name before conversion. it can be array or string - comma separated enumerated list. If it is not specified, the internal encoding will be used.  /* Auto detect encoding from JIS, eucjp-win, sjis-win, then convert str to UCS-2LE */  $str = mb_convert_encoding($str, “UCS-2LE”, “JIS, eucjp-win, sjis-win”);  /* “auto” is expanded to “ASCII,JIS,UTF-8,EUC-JP,SJIS” */  $str = mb_convert_encoding($str, “EUC-JP”, “auto”);
例:

 $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」,「GB 2312//IGNORE」,$data)
2つのオプションの補助パラメータ:TRANSLITとIGNORE(IGNOREは変換できないものに遭遇した場合にスキップされます).
以上が本文のすべてですが、お好きになってください.