ホームページ  >  記事  >  バックエンド開発  >  phpのファイルに中国語の文字が文字化けして書き込まれてしまった場合はどうすればよいですか?

phpのファイルに中国語の文字が文字化けして書き込まれてしまった場合はどうすればよいですか?

PHPz
PHPzオリジナル
2023-04-25 17:29:02536ブラウズ

近年、ネットワーク技術の発展により、特にプログラム開発の分野において私たちの生活は大変便利になりました。私は開発者として、ファイルに書き込まれる文字化けの問題に遭遇したことがありますが、問題を解決するのに一定の時間を費やした後、ここでその経験を共有したいと思います。

問題の原因

私のプロジェクトでは、大量の中国語の文字を格納する変数をファイルに書き込む必要があります。私は最初に、最も一般的で最も単純な方法を使用しました。次のコードを使用して、文字列全体を直接書き込みます。

$file = fopen("test.txt", "w");
fwrite($file, $str);
fclose($file);

しかし、test.txt を開くと、その中の中国語の文字がすべて意味不明になってしまいました。

問題分析

まず公式ドキュメントを参照すると、fwrite() 関数の説明で次のように言及されていることがわかります。

fwrite — 将内容写入文件中
int fwrite ( resource $handle , string $string [, int $length ] )

2 番目のパラメータも文字列です。それがこれから書くことです。ただし、文字列に中国語の文字 (一般的な日本語、韓国語、その他の英語以外の文字を含む) が含まれている場合は、注意する必要があります。

コンピュータでは文字は 2 進数で表現されるため、英語は通常 1 バイト (8 ビット) を占めますが、中国語 1 文字は 2 ~ 3 バイトを必要とします。これにより、中国語の 2 進数をファイルに直接書き込むと、オペレーティング システムの違いにより文字化けが発生する可能性があるという問題が発生します。

解決策

問題の本質は文字エンコーディングが異なることなので、同じエンコーディングを使用することで解決できます。

PHP では文字列のエンコーディングを指定し、mbstring ライブラリを使用して操作できます。したがって、文字列を UTF-8:

$file = fopen("test.txt", "w");
fwrite($file, mb_convert_encoding($str, "UTF-8"));
fclose($file);

のように同じエンコーディングに変換してから書き込むことで、中国語の文字化けの問題を回避できます。ファイルを開くときにまだ文字化けが発生する場合は、使用しているテキスト エディターのデフォルトのエンコードが UTF-8 ではないことが原因である可能性があります。この場合は、エディターを使用してファイルを開き、エンコードを手動で UTF-8 に変換することができます。 UTF-8 にすると、正しい中国語が表示されます。

まとめ

この記事では、PHPでファイルを書くときに中国語が文字化けしてしまう問題を回避する方法を紹介します。重要なのは、文字エンコーディングの問題を認識し、書き込む前に文字エンコーディングの変換を行うことです。同じ問題を抱えている読者の助けになれば幸いです。

以上がphpのファイルに中国語の文字が文字化けして書き込まれてしまった場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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