ホームページ >バックエンド開発 >PHPチュートリアル >file_get_contents 読み取りパスに含まれる中国語のファイル名に関連する問題

file_get_contents 読み取りパスに含まれる中国語のファイル名に関連する問題

WBOY
WBOYオリジナル
2016-06-13 13:15:451280ブラウズ

file_get_contents の読み取りパスに中国語のファイル名が含まれています。
$data = file_get_contents($file_names); $file_names が指すパスに中国語のファイル名が含まれている場合、エラーが報告されます。 open stream : そのようなファイルやディレクトリはありません。中国語のファイル名は非常に紛らわしいので、使用しないでください。ファイルの名前を変更できません

-----解決策---------
$file_names = "D :/My Documents/Youku Filesdownload/[LIVE]Wang Feng.-.Spring.flv";
$s = file_get_contents($file_names);
echo strlen($s);//7216760

おっしゃるとおり問題ありません、もちろんファイル名を正しく書く必要があります(言語エンコードも含む)
------解決策----------------------
鍵は $file_names のファイル名にありますエンコーディングはオペレーティング システムの言語エンコーディングと一致している必要があります。
------解決策---------

話し合う

重要なのは、$file_names 内のファイル名のエンコーディングがオペレーティング システムの言語エンコーディングと一致している必要があるということです

------解決策---------
echo strlen($data );を見てください。コンテンツを取得しましたか?
------解決策---------
iconv("utf-8", "gbk " ,file_get_contents('url'));
まずオペレーティング システムのエンコーディングを変更して、ファイルのコンテンツを開いてみますか?主な原因は、中国語のパスではファイルを開けず、コンテンツを取得できないため、置き換えることができないためです。
------解決策------
1. ファイル名にスペースが含まれていますか?
2. 次に、ファイル ディレクトリを出力して確認します。
------解決策---------
ディレクトリ機能を使用してファイル名が読み取られます。はい、エンコード変換を行う必要はありません
glob関数を使用してみてはいかがでしょうか?
scandir によって読み取られるファイル名にはパスが含まれませんが、glob によって読み取られるファイル名にはパスが含まれます。ファイル名を組み立てる手間が省けます
サフィックスを読み取るには、シンプルで効率的な pathinfo($filename, PATHINFO_EXTENSION) を使用できます

さらに、PHP のバージョン番号もお知らせください以前のバージョンでは、中国語のファイル名が無効になる可能性があります。
にチェックを入れてください
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。