phpは「中国語ファイル名」ファイルのエラー問題を識別する
1471 ワード
問題の発見:
プログラマーは怠け者の知恵を持っていて、今日はWampserverでphpプログラムを実行しました.ファイルのファイル名を一括処理することを目的としていますが、途中で奇妙なエラーが発生しました.(1)phpファイルがあるディレクトリで、「テスト.txt」と「test.txt」というファイルを手動で作成しました.(2)PHPコードに次のコードを入力します.
実行結果は次のとおりです.
なぜ「中国語ファイル名」のファイルが検索できないと表示されるのですか?深く考えてみると、(1)コンピュータでファイルを検索するのは、「ディレクトリ」をファイルシステムに入れて段階的に検索することにほかならないが、ディレクトリは文字列であり、文字列はコンピュータにとってバイナリである.(2)見つからない場合、プログラムコードのこのバイナリデータとファイルシステムの対応するファイルのディレクトリのバイナリデータが一致しないことを説明する.(3)私のPHPファイルコードは「UTF 8」で、オペレーティングシステムのコードは「GB 2312」です.(4)はい、結論として、符号化が異なるため、ファイルシステムはUTF 8符号化下の中国語の経路を認識できない.
解決方法:
出力:
問題は解決しました.今回の間違いの経験:
非ASCIIコードテーブル文字を使用する場合、(1)オペレーティングシステムの符号化;(2)記憶環境の符号化;(3)コードファイルの符号化;(4)目標運行環境の符号化;
プログラマーは怠け者の知恵を持っていて、今日はWampserverでphpプログラムを実行しました.ファイルのファイル名を一括処理することを目的としていますが、途中で奇妙なエラーが発生しました.(1)phpファイルがあるディレクトリで、「テスト.txt」と「test.txt」というファイルを手動で作成しました.(2)PHPコードに次のコードを入力します.
var_dump(file_exits(" .txt"));
var_dump(file_exits("test.txt"));
実行結果は次のとおりです.
false
true
なぜ「中国語ファイル名」のファイルが検索できないと表示されるのですか?深く考えてみると、(1)コンピュータでファイルを検索するのは、「ディレクトリ」をファイルシステムに入れて段階的に検索することにほかならないが、ディレクトリは文字列であり、文字列はコンピュータにとってバイナリである.(2)見つからない場合、プログラムコードのこのバイナリデータとファイルシステムの対応するファイルのディレクトリのバイナリデータが一致しないことを説明する.(3)私のPHPファイルコードは「UTF 8」で、オペレーティングシステムのコードは「GB 2312」です.(4)はい、結論として、符号化が異なるため、ファイルシステムはUTF 8符号化下の中国語の経路を認識できない.
解決方法:
var_dump(file_exits(iconv('UTF-8','GB2312'," .txt")));
出力:
true
問題は解決しました.今回の間違いの経験:
非ASCIIコードテーブル文字を使用する場合、(1)オペレーティングシステムの符号化;(2)記憶環境の符号化;(3)コードファイルの符号化;(4)目標運行環境の符号化;