ホームページ  >  記事  >  バックエンド開発  >  PHPの文字化けを解決する方法

PHPの文字化けを解決する方法

藏色散人
藏色散人オリジナル
2021-11-02 09:22:284930ブラウズ

文字化けした PHP 文字列の解決策: 1. iconv を使用して gb2312 を utf-8 に置き換えます; 2. mb_convert_encoding 関数を使用してエンコーディングを変換します。

PHPの文字化けを解決する方法

この記事の動作環境:Windows7 システム、PHP7.1 バージョン、DELL G3 パソコン

文字化けの解決方法php文字列? PHP iconv() 関数の文字エンコーディング変換に関する問題

PHP の iconv 関数ライブラリは、さまざまな文字セット間の変換を完了でき、PHP プログラミングに不可欠な基本関数ライブラリですが、一部の場合には 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 つのメソッドには具体的な比較はありません。最初のメソッドの方が良いと思います。 ( gb2312 の代わりに GBK ) 方法の方が優れています。

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

iconv
(PHP 4 >= 4.0.5, PHP 5)
iconv – Convert string to requested character encoding
Description
string iconv ( string in_charset, string out_charset, string str )
Performs a character set conversion on the string str from in_charset to out_charset. Returns the converted string or FALSE on failure.
If you append the string //TRANSLIT to out_charset transliteration is activated. This means that when a character can't be represented in the target charset, it can be approximated through one or several similarly looking characters. If you append the string //IGNORE, characters that cannot be represented in the target charset are silently discarded. Otherwise, str is cut from the first illegal character.

この関数を使用して文字列エンコーディングを変換する場合、utf-8 を gb2312 に変換すると、文字列が表示される場合があります。切り捨てが発生します。現時点では、次の方法を使用して問題を解決できます。

$str=iconv('utf-8',"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 である場合は、データをエンコードして変換する必要があります。データベースに入るときに文字化けします。

Make a GBK To UTF-8:

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

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

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

通常は iconv を使用します。mb_convert_encoding 関数は、元のエンコーディングが特定できない場合、または変換後に iconv が正常に表示できない場合にのみ使用してください。

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

推奨学習: 「PHP ビデオ チュートリアル

以上がPHPの文字化けを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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