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"
Сохраните файл и перезагрузите систему.
Дополнительные ресурсы