1. libiconv 関数ライブラリ http://ftp.gnu.org/pub/gnu/libiconv/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下で
私は現在、キャプチャされたutf-8でエンコードされたページをgb2312に変換するためにiconv関数を使用する必要があることがわかりました。 iconv 関数を使用して、キャプチャした utf-8 でエンコードされたページを gb2312 に変換することしかできません。取得したデータがトランスコードされると、理由もなくデータが減ります。 しばらく落ち込んだ後、インターネット上の情報を調べたところ、これは iconv 関数のバグであることがわかりました。 iconv は文字「—」を gb2312 に変換するときにエラーを起こします
解決策は非常に簡単です。つまり、変換する必要があるエンコーディングの後、つまり iconv 関数の 2 番目のパラメーターの後に「//IGNORE」を追加します。以下の通り:
以下は引用された内容です:
iconv("UTF-8","GB2312//IGNORE",$data)
ignore は、ignore パラメータを指定しないと、この文字に続くすべての文字列を無視することを意味します。保存することはできません。
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/
簡単な使用例:
php
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 に作成する
コードをコピーする コードは次のとおりです:
< ?php
header("content-Type: text/html; charset=Utf-8");
echo mb_convert_encoding("あなたは私の友達です", "UTF-8", " GBK ");
?>
別の GB2312 To 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] )
まず 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");
http://www.bkjia.com/PHPjc/324396.html
www.bkjia.comtruehttp://www.bkjia.com/PHPjc/324396.html技術記事 1. libiconv 関数ライブラリ http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.2.tar.gz をダウンロードします。 2. tar -zxvf libiconv-1.9.2.tar.gz を解凍します。 、 libiconv をインストールし、次のようにコードをコピーします: #...