ホームページ  >  記事  >  バックエンド開発  >  PHPでgbkをutf8に変換するにはどうすればよいですか?

PHPでgbkをutf8に変換するにはどうすればよいですか?

青灯夜游
青灯夜游オリジナル
2020-11-03 17:29:594892ブラウズ

iconv() 関数は、php で gbk エンコーディングを utf8 エンコーディングに変換するために使用できます。iconv 関数は、既知の文字セット ファイルを別の既知の文字セット ファイルに変換できます。構文形式は「 iconv('GBK '、'UTF-8'、文字列)」。

PHPでgbkをutf8に変換するにはどうすればよいですか?

# 推奨: 「

PHP ビデオ チュートリアル

php で gbk を utf8 に変換する

php では、iconv() 関数を使用して gbk を utf8 に変換できます。

iconv 関数は、既知の文字セット ファイルを別の既知の文字セット ファイルに変換できます。例: GB2312 から UTF-8 に変換します。

iconv 関数は php5 に組み込まれており、GB 文字セットはデフォルトでオンになっています。

例:

<?php
header("Content-type:text/html;charset=GB2312");
echo $str= &#39;你好,这里是gbk转utf8!&#39;;
echo &#39;<br />&#39;;
echo iconv(&#39;GB2312&#39;, &#39;UTF-8&#39;, $str); //将字符串的编码从GB2312转到UTF-8

説明: php iconv 関数

php の iconv 関数ライブラリは、さまざまな文字セット間の変換を完了できます。プログラミングに不可欠な基本的な関数ライブラリですが、場合によっては、理由もなく iconv が一部のデータをトランスコードできない場合があります。たとえば、文字「—」を gb2312 に変換するとエラーが発生します。

この関数の使用法を見てみましょう。

最も単純なアプリケーションでは、gb2312 を utf-8 に置き換えます。

$text=iconv("GB2312","UTF-8",$text);

$text=iconv("UTF-8","GB2312 ", $text) 処理中に、英語名の「—」や「.」などの特殊文字が発生すると、変換は中断されます。これらの文字の後のテキストはそれ以上変換できません。

この問題を解決するには、次のコードを使用します。

$text=iconv("UTF-8","GBK",$text);

お読みのとおり、とても簡単です。gb2312 を使用する代わりに GBK を記述するだけです。

別のメソッド (2 番目のパラメーター) があり、次のように //IGNORE を追加してエラーを無視します。

iconv("UTF-8","GB2312//IGNORE",$data);

これら 2 つのメソッドには具体的な比較はありません。私は、2 番目のパラメーター One (gb2312 の代わりに GBK) アプローチの方が優れていると感じます。

PHP マニュアルの iconv() の説明:

iconv

(PHP 4 > = 4.0.5, PHP 5)
iconv – 文字列を要求された文字エンコーディングに変換する
Description
string iconv ( string in_charset, string out_charset, string str )
string str from in_charset to out_charset. 変換された文字列を返すか、失敗した場合は FALSE を返します。
文字列 //TRANSLIT を out_charset に追加すると、音訳が有効になります。これは、文字がターゲットの文字セットで表現できない場合に、文字変換が有効になることを意味します。 1 つまたは複数の類似した文字によって近似できます。文字列 //IGNORE を追加すると、ターゲットの文字セットで表現できない文字は暗黙的に破棄されます。それ以外の場合、str は最初の不正な文字から切り取られます。

この関数を使用して文字列エンコードを変換する場合、utf-8 を gb2312 に変換すると文字列が切り詰められる可能性があることに注意してください。現時点では、次の方法を使用して問題を解決できます。

$str=iconv(&#39;utf-8&#39;,"gb2312//TRANSLIT",file_get_contents($filepath));

つまり、2 番目のパラメータに赤い部分を追加します。これは、ソース エンコードに一致する文字がターゲット エンコードで見つからない場合を意味します。と似た文字が選択されるので変換してください。ここで //IGNORE パラメーターを使用して、変換できない文字を無視することもできます。

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

iconv は php のデフォルトの機能ではなく、デフォルトでインストールされるモジュールでもあります。使用する前にインストールする必要があります。

Windows2000 PHP の場合は、php.ini ファイルを変更して、extension=php_iconv.dll の前の「;」を削除します。同時に、元の PHP の下に iconv.dll をコピーする必要があります。インストール ファイルを winnt/system32 の下に置きます (dll がこのディレクトリを指している場合)。 Linux 環境では、静的インストールを使用して、configure 時に項目 --with-iconv を追加するだけです。iconv 項目は phpinfo で確認できます。 (Linux7.3 Apache4.06 php4.3.2)。

mb_convert_encoding 関数と iconv 関数の概要

mb_convert_encodingこの関数は、エンコーディングを変換するために使用されます。以前はプログラムコーディングの概念が理解できませんでしたが、今では少し理解できるようになりました。ただし、通常、英語にはエンコードの問題はなく、中国語のデータのみにこの問題が発生します。たとえば、Zend Studio または Editplus を使用してプログラムを作成するときは、gbk エンコーディングを使用します。データをデータベースに入力する必要があり、データベース エンコーディングが utf8 である場合は、データをエンコードして変換する必要があります。データベースに入るときに文字化けします。

GBK を UTF-8 に作成します:

<?php 
header("content-Type: text/html; charset=Utf-8"); 
echo mb_convert_encoding("妳係我的友仔", "UTF-8", "GBK"); 
?>

次に、GB2312 を Big5 に作成します:

<?php 
header("content-Type: text/html; charset=big5"); 
echo mb_convert_encoding("你是我的朋友", "big5", "GB2312"); 
?>

ただし、上記の関数をインストールする必要がありますが、最初に mbstring 拡張ライブラリを有効にする必要があります。

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

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

string iconv ( string in_charset, string out_charset, string str )注意:第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://TRANSLIT 和 //IGNORE,其中 //TRANSLIT 会自动将不能直接转化的字符变成一个或多个近似的字符,//IGNORE 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。

一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数。

$content = iconv("GBK", "UTF-8″, $content);
$content = mb_convert_encoding($content, "UTF-8″, "

更多编程相关知识,请访问:编程学习课程!!

以上がPHPでgbkをutf8に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。