1

Ubuntu を実行している Web サーバーがあり、サーバー上のダウンロード可能なファイルを指す Web ページにいくつかのリンクがあります。問題は、文字エンコーディングが原因で 404 (見つかりません) になることです。

Web サイトには、次を含むダウンロード リンクLuísがありますが、サーバー上のファイル名は、Lu�s私の場合のように表示されますls

この種の文字を含まないファイル リンクには問題はありませんが、「特殊な」文字があると 404 が発生します。

これを修正する方法についてのアイデアはありますか?

更新:ロケールを実行すると、次のようになります:

LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

そうじゃない?つまり、utf8を使用していますよね?

4

2 に答える 2

1

リンクはLu%C3%ADsLuís)である必要があります。残念ながら、サーバー上のファイル名は実際にはLu%EF%BF%BDsLu�s)であり、正しく作成されていないことを意味します。プログラムで作成された場合は、ファイル名をデコードするときにプログラムが間違ったUTFエンコーディングを想定していたことを意味します。

Lu�sで表示されている場合ls、コンソールは間違いなくUTF-8に含まれていませんが、含まれているLu�sかどうかが表示されます。しかし、それはファイル名が最初に台無しにされたことを示すだけであり、これらのファイルを作成するコードを修正する必要があります。

これまでのところ、リンクを含むファイルをダウンロードできるはずですが、誤ったコードによって作成されたファイル名の非ASCII文字はURLにLu%EF%BF%BDs含まれるため、これは実際の解決策ではありません。%EF%BF%BD

これがあなたの質問から言えることのすべてです。

于 2012-12-19T14:29:30.377 に答える
1

Web サーバーでどのロケールを使用していますか? サーバーのロケールと HTML コーディング ページが同一であればよいでしょう。

つまり、UTF-8 をサーバー ロケールとして使用し、UTF-8 を Web ページのコードページとして使用する必要があります。

たとえば、UTF-8 コードページの HTML リンクがあり、サーバーのロケールが latin-1 の場合、同様の問題が発生します。

そのため、サーバーのロケールを確認する必要があります。lsを実行すると、HTML リンクで使用しているファイル名とまったく同じ名前が表示されるはずです。

更新しました

Linux でロケールを確認する方法: ロケールを実行するだけです

Apache のデフォルトのコーディング ページを確認する方法 (Web サーバーとして Apache を使用している場合) - httpd.conf に移動し、次のように確認します: AddDefaultCharset utf-8

于 2012-12-19T11:35:37.087 に答える