今日オンラインで論文を修正していたときに、iconv 関数に出会いました。詳細については、こちらをご覧ください
header('Content-Type: application/vnd.ms-excel;charset=UTF-8"');
$name=iconv('utf-8', 'gb2312', $data['year' ] .'年、番号'.$data['期間'].'通信');
header('Content-Disposition:attachment;filename="' . $name . '.xls"');
header( 'Cache-Control: max-age=0');
このコードの意味は、utf-8 形式を gb2312 形式に変換し、それを $name に割り当てて、Excel ファイルの名前がエクスポートされるときに、$name の名前は中国語になります
以下はこの関数の詳細な使用方法です
元の URL (www.cnblogs.com/keheng/articles/2496017.html); "UTF-8"," GB2312//IGNORE",$data)
ignore は、変換中にエラーを無視することを意味します。ignore パラメーターがないと、この文字に続くすべての文字列は保存できません。
この iconv() 関数は php5 に組み込まれています。 -in.ありがとうございます。
例:
echo $str= 'こんにちは、ここではコーヒーを販売しています!';
echo '
';
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のデフォルトの機能ではなく、デフォルトでインストールされるモジュールでもあります。使用する前にインストールする必要があります。
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
インストール:
#cp libiconv-1.8 .tar.gz /usr/local/src
#tar zxvf lib*
#./configure --prefix=/usr/local/libiconv
#make
#make install
compile php
#./configure --prefix= /usr/local/php4.3.2 --with-iconv=/usr/local/libiconv/
簡単な使用例:
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 に作成します
< ( "content-Type: text/html; charset=Utf-8");
echo mb_convert_encoding("あなたは私の友達です", "UTF-8", "GBK");
GB2312 から Big5
< ?php
header("content-Type: text/html; charset=big5");
echo mb_convert_encoding("あなたは私の友達です", "big5", "GB2312"); ;
ただし、上記の機能を使用するには、インストールする必要がありますが、最初に mbstring 拡張ライブラリを有効にする必要があります。
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] )
まず php.ini で、extension=php_mbstring.dll の前の ; を削除する必要があります。 mb_convert_encoding は複数指定できます。内容に基づいて自動的に識別されますが、実行効率は iconv よりもはるかに悪くなります。
string iconv (string in_charset, string out_charset, string str)
注: 2 番目のパラメータエンコーディングに加えて、次の 2 つのサフィックスを追加することもできます。//TRANSLIT と //IGNORE は、直接変換できない文字を 1 つ以上の近似文字に自動的に変換します。変換できない文字は無視され、デフォルトの効果は最初の不正な文字から切り捨てられます。
変換された文字列、または失敗した場合は FALSE を返します。
使用:
文字「-」を gb2312 に変換するときに、iconv がエラーを起こすことがわかりました。ignore パラメーターがないと、この文字に続くすべての文字列を保存できません。この「-」はどうやってもうまく変換できず出力できません。 なお、mb_convert_encoding にはこのバグはありません
通常は、元のエンコーディングがわからない場合、または変換後に iconv が正常に表示されない場合にのみ mb_convert_encoding 関数を使用してください。変換前の文字コード名。配列または文字列 - カンマ区切りの列挙リスト。指定しない場合は、内部エンコーディングが使用されます。
2 /* JIS、eucjp-win、sjis-win からエンコーディングを自動検出します。 Convert str to UCS-2LE */
3 $str = mb_convert_encoding($str, “UCS-2LE”, “JIS, eucjp-win, sjis-win”);
4 /* 「auto」は「ASCII,」に展開されます。 JIS,UTF -8,EUC-JP,SJIS” */
5 $str = mb_convert_encoding($str, “EUC-JP”, “auto”);
例:
1 $content = iconv(” GBK”, "UTF-8″, $content);
2 $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 は、変換できないものに遭遇した場合にスキップすることを意味します)。説明
string iconv ( string in_charset, string out_charset, string str )
文字列 str に対して in_charset から out_charset への文字セット変換を実行し、変換された文字列を返すか、失敗した場合は FALSE を返します。これは、文字がターゲットの文字セットで表現できない場合、文字列 //IGNORE を追加すると、文字セットで表現できない文字を近似できることを意味します。それ以外の場合、str は最初の不正な文字から切り取られます。
http://www.bkjia.com/PHPjc/1011003.html
true