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

Все это без эффекта для загрузки таких файлов. Какие-либо предложения?

ОБНОВИТЬ

Просто упомяну это: я запускаю сайты на сервере CentOS с предварительно настроенной панелью plesk

2 ответа

Решение

Проблема здесь не в вашем браузере и не в конфигурации 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 

и установите его в качестве языка по умолчанию.

Надеюсь, это поможет!

В дополнение к ответу 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"

Сохраните файл и перезагрузите систему.

Дополнительные ресурсы

Другие вопросы по тегам