ホームページ >バックエンド開発 >PHPチュートリアル >Windowsシステム上でPHPのfopen関数で中国語名のドキュメントを作成した場合に文字化けが発生する問題について

Windowsシステム上でPHPのfopen関数で中国語名のドキュメントを作成した場合に文字化けが発生する問題について

WBOY
WBOYオリジナル
2016-07-30 13:31:231238ブラウズ

ご存知のとおり、PHP の fopen 関数は新しいドキュメントを作成できますが、作成したドキュメントの名前が中国語であり、Windows システムを使用している場合、ドキュメント名の中国語の部分が文字化けすることがわかります。実験してみましょう:

PHP スクリプト (UTF-8 エンコーディング)

<code><span><?php </span><span>$fileName</span> = <span>__DIR__</span> . <span>'/中文文档.txt'</span>;
<span>//$fileName = iconv('UTF-8', 'GBK', $fileName);</span><span>$fp</span> = fopen(<span>$fileName</span>, <span>'w'</span>);
fwrite(<span>$fp</span>, <span>'这是中文内容'</span>);
fclose(<span>$fp</span>);
<span>?></span></span></code>

上記のスクリプトを実行し、新しく作成されたドキュメントを参照します:
Windowsシステム上でPHPのfopen関数で中国語名のドキュメントを作成した場合に文字化けが発生する問題について
ご覧のとおり、ドキュメント名は文字化けしていますが、ドキュメントの内容は文字化けしていません。

解決策

上記のPHPスクリプトの2番目の文のコメントを削除し、$fileNameUTF-8エンコードからGBKエンコードに変換してからスクリプトを再度実行すると、ドキュメント名が文字化けしないことがわかります:
不Windowsシステム上でPHPのfopen関数で中国語名のドキュメントを作成した場合に文字化けが発生する問題について

最後に

現在、この状況は Windows システムでのみ発生しており、Mac OS/Linux では正常です。したがって、Unix/Linux システムでは、ファイル名のエンコーディングを変換する必要はありません。ファイル名を GBK エンコードに変更すると、文字化けが発生します。例:
Windowsシステム上でPHPのfopen関数で中国語名のドキュメントを作成した場合に文字化けが発生する問題について

著作権表示: この記事はブロガーによるオリジナルの記事であり、ブロガーの許可なく複製することはできません。

上記では、PHP の fopen 関数を使用して Windows システム上で中国語名のドキュメントを作成する際に発生する文字化けの問題を、関連する側面も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

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