ホームページ  >  記事  >  バックエンド開発  >  php_PHP チュートリアルの mb_convert_encoding と iconv の違い

php_PHP チュートリアルの mb_convert_encoding と iconv の違い

WBOY
WBOYオリジナル
2016-07-13 10:55:591111ブラウズ

mb_convert_encoding この関数はエンコーディングを変換するために使用されます。私はプログラムコーディングの概念を理解していませんでしたが、今では少し理解できるようになりました。 ただし、通常、英語にはエンコードの問題はなく、中国語のデータのみにこの問題が発生します。

たとえば、Zend Studio または Editplus を使用してプログラムを作成する場合、データをデータベースに入力する必要があり、データベース エンコーディングが utf8 である場合は、データをエンコードして変換する必要があります。それ以外の場合は、gbk エンコーディングを使用します。データが文字化けしてしまいます。

mb_convert_encodingの使用方法については、公式Webサイトをご覧ください:

mb_convert_encoding — 文字エンコーディングを変換する

バグを報告する 説明
string mb_convert_encoding ( string $str , string $to_encoding [,mixed $from_encoding ] )
文字列 str の文字エンコーディングを、オプションで from_encoding から to_encoding に変換します。

バグパラメータを報告する

ストラ
エンコードされる文字列。

to_encoding
str が変換されるエンコーディングのタイプ。

from_encoding
変換前の文字コード名で指定します。from_encodingが指定されていない場合は、配列またはカンマ区切りの列挙リストになります。

サポートされているエンコーディングを参照してください。


バグの戻り値を報告する
エンコードされた文字列。

バグの例を報告する

例 #1 mb_convert_encoding() の例

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

/* 内部文字エンコーディングを SJIS に変換します */
$str = mb_convert_encoding($str, "SJIS");

/* EUC-JP を UTF-7 に変換 */
$str = mb_convert_encoding($str, "UTF-7", "EUC-JP");

/* 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");
?>

mb_convert_encoding( $str, $encoding1,$encoding2 )

$str、変換される文字列
$encoding1、ターゲット エンコーディング (utf-8、gbk など)、大文字と小文字の両方
$encoding2、utf-8、gbkなどのオリジナルのエンコーディング、大文字と小文字の両方が使用可能

例1

コードは次のとおりです コードをコピー
$str='スクリプト ホーム: http://www.bKjia.c0m'; echo mb_convert_encoding($str, "UTF-8") // エンコーディングを utf-8 に変換します
?>

コードは次のとおりですコードをコピー $str='スクリプト ホーム: http://www.bKjia.c0m'; echo mb_convert_encoding($str, "UTF-8", "GBK"); //元のエンコーディングが GBK であることがわかっているので、utf-8 に変換します
?>

コードは次のとおりです $str='スクリプト ホーム: http://www.bKjia.c0m'; echo mb_convert_encoding($str, "UTF-8", "auto"); //元のエンコーディングが不明なので、auto による自動検出の後、エンコーディングを utf-8 に変換します
コードをコピー
?>


GBK を UTF-8 に作成する

もう一つの GB2312 が Big5 に
コードは次のとおりです コードをコピー
header("content-Type: text/html; charset=Utf-8"); echo mb_convert_encoding("???S私の友達", "UTF-8", "GBK"); ?>

コードは次のとおりです header("content-Type: text/html; charset=big5"); echo mb_convert_encoding("あなたは私の友達です", "big5", "GB2312"); ?> PHP の別の関数 iconv も文字列エンコーディングの変換に使用され、その関数は上記の関数と似ています。
コードをコピー



ただし、上記の機能を使用するには、まずmbstring拡張ライブラリをインストールして有効にする必要があります。

以下にいくつかの詳細な例があります:

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 [,混合 from_encoding] )
まず mbstring 拡張ライブラリを有効にし、php.ini の extension=php_mbstring.dll の前にある ; を削除する必要があります。 mb_convert_encoding は複数の入力エンコーディングを指定でき、内容に基づいて自動的に識別されますが、実行効率は iconv;

よりもはるかに悪くなります。


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


使用:

iconv は文字「-」を gb2312 に変換するときにエラーが発生することがわかりました。ignore パラメーターがないと、この文字に続くすべての文字列を保存できません。この「-」はどうやってもうまく変換できず出力できません。 なお、mb_convert_encoding にはこのバグはありません

通常は、iconv を使用します。mb_convert_encoding 関数は、元のエンコーディングが特定できない場合、または変換後に iconv が正常に表示できない場合にのみ使用してください。
from_encoding は、変換前の文字コード名で指定されます。配列または文字列 (カンマ区切りの列挙リスト) が可能です。指定されていない場合は、内部エンコーディングが使用されます。

コードは次のとおりです

コードをコピー

/* JIS、eucjp-win、sjis-win からエンコードを自動検出し、str を UCS-2LE に変換します */ /* 「auto」は「ASCII,JIS,UTF-8,EUC-JP,SJIS」に展開されます */コードは次のとおりです
$str = mb_convert_encoding($str, “UCS-2LE”, “JIS, eucjp-win, sjis-win”); $str = mb_convert_encoding($str, “EUC-JP”, “auto”);
例:


コードをコピー

$content = iconv("GBK", "UTF-8//IGNORE", $content);

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632197.html技術記事 mb_convert_encoding 関数は、エンコーディングを変換するために使用されます。私はプログラムコーディングの概念を理解していませんでしたが、今では少し理解できるようになりました。ただし、通常、英語でのコーディングの問題はありません...
$content = mb_convert_encoding($content, “UTF-8”, “GBK”);
通常は、iconv を使用します。mb_convert_encoding 関数は、元のエンコーディングがわからない場合、または変換後に iconv が正常に表示できない場合にのみ使用してください。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。