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 に作成する
コードは次のとおりです |
コードをコピー |
header("content-Type: text/html; charset=Utf-8");
echo mb_convert_encoding("???S私の友達", "UTF-8", "GBK");
?>
|
もう一つの GB2312 が Big5 に
コードは次のとおりです
コードをコピー |
|
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 [,混合 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 に変換します */
$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//IGNORE", $content);
$content = mb_convert_encoding($content, “UTF-8”, “GBK”); |
|
通常は、iconv を使用します。mb_convert_encoding 関数は、元のエンコーディングがわからない場合、または変換後に iconv が正常に表示できない場合にのみ使用してください。
|
http://www.bkjia.com/PHPjc/632197.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632197.html技術記事 mb_convert_encoding 関数は、エンコーディングを変換するために使用されます。私はプログラムコーディングの概念を理解していませんでしたが、今では少し理解できるようになりました。ただし、通常、英語でのコーディングの問題はありません...
|