web-dev-qa-db-ja.com

LinuxがUTF8エンコード文字を解釈しない

したがって、次のファイルAdán-y-Eva-50x50.jpgにアクセスしようとすると、ApacheはそれをAd\xc3\xa1n-y-Eva-50x50.jpgに変換し、存在していても見つかりません。

これは、UTF8文字を含むファイル名でのみ発生します。

私の/etc/httpd/conf/httpd.confには、すでに次の設定があります

...
AddDefaultCharset UTF-8
...
IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable +Charset=UTF-8
...

そして、これも最初の行の私のルート.htaccessに追加しました:

IndexOptions +Charset=UTF-8

これらすべては、これらの種類のファイルをロードする効果はありません。助言がありますか?

更新

ちょうどそれを言及する:私はpleskパネルが事前設定されたCentOSサーバーでウェブサイトを実行しています

7
w0rldart

ここでの問題は、ブラウザにもApacheの構成にもありません。システムのロケール設定を再確認する必要があります。

Apacheが実行されているロケールでUTF-8が有効になっているかどうかを確認する必要があります。そのためには、次のコマンドを実行します。

$ Sudo su -l -c locale www-data

ここで、www-dataはApacheユーザーです。返されたロケールがes_ES.UTF-8のようになっていないかどうかを確認します。これは、ロケールでUTF-8が有効になっていないことを意味します。

この場合、CentOSマシンの/etc/sysconfig/i18nでこの構成を変更し、行LANG="es_ES"LANG="es_ES.UTF-8"に変更できます。ただし、これが機能するためには、システムにこの言語のロケールファイルが必要です。存在するかどうかを確認するには、locale -aを使用して、利用可能なロケールのリストを取得します。

システムにUTF-8対応のロケールがない場合は、次のコマンドを使用してロケールを生成できます。

$ Sudo localedef -i es_ES -f UTF-8 es_ES.utf8 

デフォルトの言語として設定します。

この助けを願っています!

11
fboaventura

Fboaventuraの答えに加えて

Apacheが実行されているロケールを確認します

$ Sudo su -l -c locale www-data

変更するためにi18n構成/etc/sysconfig/i18n

CentOSシステム構成ディレクトリに移動します

$ cd /etc/sysconfig

言語設定ファイルのバックアップコピーを作成します

$ cp i18n i18n.backup

nanoを使用して言語設定ファイルを編集します

$ nano i18n

構成を含めるようにファイルを編集します

例えば:

LANG="en_US.utf8"
SYSFONT="latarcyrheb-Sun16"
SUPPORTED="en_US.utf8:en_US:en:fr_FR.utf8:fr_FR:fr :es_ES.utf8:es_ES:es:de_DE.utf8:de_DE:de:sv_SE.utf 8:sv_SE:sv:zh_CN.utf8:
zh_CN:zh:zh_TW.utf8:zh_TW:zh:ja_JP.utf8:ja_JP:ja:k o_KR.utf8:ko_KR:ko"

ファイルを保存してシステムを再起動します。

その他のリソース

1
RafaSashi