ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルでのエンコード変換関数 mb_convert_encoding および iconv の使用手順

PHP_PHP チュートリアルでのエンコード変換関数 mb_convert_encoding および iconv の使用手順

WBOY
WBOYオリジナル
2016-07-21 15:42:401084ブラウズ

ただし、通常、英語にはエンコードの問題はなく、中国語のデータのみにこの問題が発生します。たとえば、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("You are my friends", "UTF-8", " GBK ");
?>

Big5 への別の GB2312
コードをコピーします コードは次のとおりです:

header("content-Type: text/html; charset =big5") ;
echo mb_convert_encoding("You are my friends", "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 で mb_convert_encoding トランスコーディングを使用する場合の小さな落とし穴
PHP プログラムで文字エンコーディングを変換するために mb_convert_encoding() メソッドを使用することは誰もがよく知っており、また大量に使用されます。そして一般に、この方法は十分にうまく機能し、賞賛に値します。しかし、あるプロジェクトでは、UTF8 を GBK に変換するためにこれを使用する必要があり、一部の特殊文字を変換するときに小さな問題が見つかりました。具体的なパフォーマンスは、utf8 ではエンコードできるが gbk ではエンコードできない文字を mb が変換することです。

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

tru​​ehttp://www.bkjia.com/PHPjc/320912.html技術記事ただし、通常、英語にはエンコードの問題はなく、中国語のデータのみにこの問題が発生します。たとえば、Zend Studio または Editplus を使用してプログラムを作成する場合、データを入力する必要がある場合は gbk エンコードを使用します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。