file_get_contents を使用してファイルを開くか、リモート サーバー ファイルを収集します。ファイル名または URL に中国語の文字が含まれる場合、「ストリームを開けませんでした: Lnvalid 引数のエラー」が表示されます。
今日、非常に難しい問題が発生しました。お客様は FTP を使用してサーバーにファイルを転送しましたが、コードを確認したところ、プロセスを再実行したところ、問題は見つかりませんでした。顧客がアップロードしたファイルの名前が中国語であることが判明したため、小規模なテストで file_get_contents 関数が中国語のファイル名をサポートしていないことが判明しました。
元のコードは次のとおりです:
$filename='ha.txt';
echo file_get_contents('./'.$filename);
実行後に結果が表示されます:
悲劇が始まります
その後、色々な判定方法を試して、エンコードの問題なのか、何度もファイルエンコードとコードエンコードを確認しましたが、全て一致していました。
関連する情報を調べましたが見つからなかったので、Google で検索したところ、誰かがこの問題に遭遇し、システム エンコーディングの問題であると述べていたので、ファイル名のトランスコードを開始しました。ファイルは utf-8 でエンコードされていますが、システムのデフォルトは gbk なので、まずファイル名を gbk に変換してから読み取ります。
$filename='ha.txt';
$filename=iconv('utf-8','gb2312',$filename);
F // echo file_get_contents (mb_convert_encoding ('./ha .txt', 'gbk', 'utf-8')) (別の方法) ️ echo file_get_contents('./'.$filename);
テスト結果:
読み取りに成功しました。
OK、完了です。
http://www.bkjia.com/PHPjc/633181.htmlwww.bkjia.comtrue