php_PHP チュートリアルで iconv 関数を使用する方法

WBOY
リリース: 2016-07-21 15:52:03
オリジナル
800 人が閲覧しました

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
#make install
4. php を再コンパイルし、コンパイルパラメータを追加します --with-iconv=/usr/local/iconv




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

以下は引用です 内容:


コードをコピー コードは次のとおりです:
iconv("UTF-8","GB2312//IGNORE",$data)


ignoreの意味変換中のエラーを無視する場合、ignore パラメータがない場合、この文字に続くすべての文字列は保存できません。


コードをコピーします コードは次のとおりです:
echo $str= 'こんにちは、ここでコーヒーを販売しています!'
echo '
'; (' 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 にはこのバグはありません

一般的に、iconv 関数は元のエンコーディングが特定できない場合、または 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/319000.html

tru​​ehttp://www.bkjia.com/PHPjc/319000.html技術記事 iconv 関数ライブラリは、さまざまな文字セット間の変換を完了することができ、PHP プログラミングに不可欠な基本関数ライブラリです。 1. libiconv 関数ライブラリをダウンロードします http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9....
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート