ホームページ >バックエンド開発 >PHPチュートリアル >PHPでiconv関数を使用する方法、phpicv関数_PHPチュートリアル

PHPでiconv関数を使用する方法、phpicv関数_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:44:21928ブラウズ

PHPでiconv関数、phpicv関数を使用する方法

iconv関数ライブラリは、さまざまな文字セット間の変換を完了することができ、PHPプログラミングに不可欠な基本的な関数ライブラリです。
1. libiconv 関数ライブラリ http://ftp.gnu.org/pub/gnu/libiconv-1.9.2.tar.gz をダウンロードします。
2. tar -zxvf libiconv-1.9.2.tar.gz を解凍します。 ;
3. libiconv をインストールします #configure --prefix=/usr/local/iconv #make
4. PHP を再コンパイルし、コンパイルパラメータを追加します --with-iconv=/usr/local/iconv




私は現在、Windows で泥棒プログラムを作成しています。iconv 関数を使用して、キャプチャされた utf-8 でエンコードされたページを gb2312 に変換する必要があります。iconv 関数を使用してキャプチャされたデータをトランスコードするだけで、データが変換されることがわかりました。理由もなく少なくなります。しばらく落ち込んでいましたが、インターネットで情報を調べたところ、これは iconv 関数のバグであることがわかりました。 iconv は文字「—」を gb2312 に変換するときにエラーを起こします
解決策は非常に簡単です。つまり、iconv 関数の 2 番目のパラメーターである、変換する必要があるエンコーディングの後に「//IGNORE」を追加します。以下:

以下引用 内容:

コードをコピーします
コードは次のとおりです。

iconv("UTF-8","GB2312//IGNORE",$data) ignore は、変換中にエラーを無視することを意味します。ignore パラメーターがないと、この文字に続くすべての文字列を保存できません。
コードをコピーします コードは次のとおりです。
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 に変換する
header( " content-Type: text/html; charset=Utf-8");
echo mb_convert_encoding("あなたは私の友達です", "UTF-8", "GBK");

Big5 への別の GB2312 < ?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] )
まず mbstring 拡張ライブラリを有効にする必要があります。php.ini で extension=php_mbstring.dll の前にある ; を削除します。複数の入力エンコーディングを指定すると、内容に応じて自動的に識別されますが、実行効率は iconv よりもはるかに悪くなります


string iconv (string in_charset, string out_charset, string str)
注: 2 番目のパラメータは、エンコーディングに加えて、//TRANSLIT と //IGNORE という 2 つのサフィックスを追加することもできます。 //TRANSLIT は、1 つ以上の近似文字に直接変換できない文字を自動的に変換します。 //IGNORE は文字を無視します。変換できない文字であり、デフォルトの効果は最初の不正な文字から切り捨てられます。
変換された文字列、または失敗した場合は FALSE を返します。


使用:

文字「-」を gb2312 に変換するときに、iconv がエラーを起こすことがわかりました。ignore パラメーターがないと、この文字に続くすべての文字列を保存できません。この「-」はどうやってもうまく変換できず出力できません。 なお、mb_convert_encoding にはこのバグはなく、一般的に mb_convert_encoding 関数は元のエンコードが判別できない場合や、変換前の文字コード名で iconv を指定した場合にのみ使用されます。配列または文字列 - 指定されていない場合は、内部エンコードが使用されます。/* 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”);
例:
$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 は、変換できないものに遭遇した場合にスキップすることを意味します)。説明

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

文字列 str に対して in_charset から out_charset への文字セット変換を実行します。

文字列 //TRANSLIT を追加した場合は FALSE を返します。これは、文字がターゲットの文字セットで表現できない場合、文字列 //IGNORE を追加すると、文字セットで表現できない文字を近似できることを意味します。それ以外の場合、str は最初の不正な文字から切り取られます。


http://www.bkjia.com/PHPjc/1048772.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1048772.html技術記事 php での iconv 関数の使い方、phpicv 関数 iconv 関数ライブラリは、さまざまな文字セット間の変換を完了することができ、php プログラミングには欠かせない基本的な関数ライブラリです。 1. libiconv 関数ライブラリをダウンロードします...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。