0

ディレクトリ内のファイルを反復処理し、それらへのリンクを出力するphpスクリプトを作成しました。ファイル名はスペイン語なので、á、é などの文字が含まれているものがあります。

私のスクリプトは、windows + apache + php である開発マシンでは正常に動作しますが、私のホスティング サーバーである linux + apache + php では動作せず、ファイルが見つかりません。

一部の検索では urlencode() の使用が提案されていますが、これを行うと開発マシンで壊れるため、Web サーバーで試したことはありませんが、受け入れられません。

編集: urlencode() を使用した場合の開発マシンでのエラーの詳細。

2 つのエラーがあるようです。1 つはファイル名に á、é などの文字が含まれている場合です。もう 1 つはファイル名に空白が含まれている場合です。

空白を含むファイル名 (つまり、「Calidad Total .doc」) は、次のリンクhttp://localhost/temarios/docs/Calidad+total+.docを取得し、404 ファイルが見つからないというエラーが表示されます。アドレスバーの「+」を「」に置き換えると、正常に機能します。

アクセント付きの文字を含むファイル名 (つまり、Economía.doc) はリンクhttp://localhost/temarios/docs/Econom%EDa.docを取得し、403 Forbidden エラーが発生します。アドレス バーの「%ED」を「í」に置き換えると、正常に機能します。

Firefox 3 および IE8 Windows 7 ベータ版でテストしましたが、両方のブラウザーで同じことが起こります。

4

1 に答える 1

1

URL を urlencode する必要があるのは、URL が印刷可能な US-ASCII 文字のみで構成されている必要があるためです。

「URL は、US-ASCII コード化文字セットの印刷可能なグラフィック文字のみで記述されます。」

開発マシンで受け取ったエラーの詳細を投稿し、何が問題なのかを理解することをお勧めします。

于 2009-02-09T22:39:49.370 に答える