file_get_contents が中国語のファイル名に遭遇したときに開けない問題を解決する_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:43:33
オリジナル
1113 人が閲覧しました

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.comtru​​e

http://www.bkjia.com/PHPjc/633181.html技術記事 file_get_contents を使用してファイルを開くか、リモート サーバー ファイルを収集します。ファイル名または URL に中国語の文字が含まれる場合、「ストリームを開けませんでした: Lnvalid 引数のエラー」が表示されます。 今日はある人に会いました…
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート