ホームページ >バックエンド開発 >PHPチュートリアル >PHPでファイルを読み込むときに文字化けする問題の解決策

PHPでファイルを読み込むときに文字化けする問題の解決策

WBOY
WBOYオリジナル
2016-07-25 09:13:22966ブラウズ

PHP を使用してファイル 3.txt を読み込むと、D:/3.txt は utf-8 ファイルであるため文字化けの問題が発生します。 コード:

  1. $f1 = fopen('D:/3.txt','r');
  2. $str = fread($f1,10000);
  3. fclose($f1);
  4. echo substr($str,1,3);
コードをコピー

このテキストを UTF テキストとしてマークするために、Microsoft は次の 3 バイトを追加しました。 ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191 上記のコードはBOMを削除するためのphpコードです。

インターセプトする場合は4番目のポジションからインターセプトを開始できます。 1桁目、2桁目、3桁目から切り取ると文字化けが発生する場合があります。 UTF-8 エンコードでは、中国語の文字は 3 バイトで表現されます。 中国語の文字がある場合は、ANSI エンコードを使用しないでください。ANSI エンコードを使用しないと、読み取り時に文字化けが発生します。

ANSI エンコード (百科事典より)

Unicodeとansiはどちらも文字コードの表現です。 コンピュータがより多くの言語をサポートするために、通常は 0x80 ~ 0xFF の範囲の 2 バイトが 1 文字を表すために使用されます。たとえば、中国語の文字「中」は、中国語のオペレーティング システムでは 2 バイト [0xD6,0xD0] に格納されます。 国や地域が異なると、さまざまな規格が策定され、その結果、GB2312、BIG5、JIS などの独自の符号化規格が作成されます。文字を表すために 2 バイトを使用するこれらのさまざまな中国語文字拡張エンコーディングは、ANSI エンコーディングと呼ばれます。簡体字中国語システムでは、ANSI エンコードは GB2312 エンコードを表し、日本語オペレーティング システムでは、ANSI エンコードは JIS エンコードを表します。

異なる ANSI コードは相互に互換性がなく、情報が国際的に交換される場合、2 つの言語に属するテキストを同じ ANSI コード化されたテキストに格納することはできません。

英語または記号の場合、エンコーディングは 1 バイトで、最上位ビットは 0 です。中国語の場合、最上位ビットは 1 で、サイズは 2 バイトでなければなりません。 この観点から、中国語のコンピュータで ANSI を保存するテキスト ファイルに日本語または韓国語が含まれている場合、エンコードの競合が発生する可能性があります。つまり、ANSI エンコードを使用して中国語、日本語、韓国語をメモ帳に保存することはできません。混合テキスト。コンピューターのメモ帳は中国語バージョンのシステム用に開発されています。 ユニバーサルにしたい場合は、txt ファイルを Unicode 形式のテキスト ファイルに保存する必要があります。したがって、国際的なことをしたい場合は、Unicode を使用する方が便利です。 実際、今日のオペレーティング システムのほとんどは Unicode でエンコードされています。ANSI エンコードを使用する場合でも、システムの内部処理中に Unicode に変換する必要があるため、コード効率が低くなります。 Unicodeを使うとさらに便利!

php文字化け問題 コード:

  1. $content=file_get_contents("http://bbs.it-home.org/");
  2. $pattern="/
  3. $match = array();
  4. preg_match_all($pattern,$content,$match);
  5. print_r($match);
コードをコピー

文字化けの問題が発生しています。

header("Content-type: text/html;charset=utf-8"); を追加します。これで完了です。

HTMLエンコード形式をutf-8に設定するために使用されます

文字化けを解決するには、次の3つの場所を見てください。 1. データベースのエンコード 2. ページエンコーディング 3. 接続エンコード

これら 3 つの場所が一致していれば、コード化けの問題は発生しません。


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