Назад | Перейти на главную страницу

Обработка имен файлов UTF-8 в Centos 7 и Apache 2.4

Мои изображения, имена которых содержат буквы с диакритическими знаками (é, à и т. Д.), Недоступны через Apache (ошибка 404).

Думаю, это не связано с Apache. Я проверил файл конфигурации:

AddDefaultCharset UTF-8

Когда я подключаюсь через Putty и запускаю команду «ls -la» для вывода списка изображений, буквы с диакритическими знаками заменяются на «?» в консоли.

Вот соответствующая информация, которая может помочь:

> echo $LANG
en_US.UTF-8
> cat /etc/environment
empty file
> locale
LANG=en_US.UTF-8
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=

Я нашел несколько руководств, но они применимы к Centos 5/6.

PS: Переименование файлов - возможное решение, но не предусмотренное в моем случае.

Наконец я решил проблему
Я установил convmv и выполнил следующую команду в папке изображений:

// -r => recursively
// --notest => don't show me the potential outcome, do convert filenames
// -f => from
// -t => to
convmv -r --notest -f iso-8859-15 -t utf8 images_folder

Эта проблема связана с файлами, которые были созданы в среде Windows, а затем загружены на сервер Centos.

Я создал файл прямо в Centos с диакритическими буквами в имени файла, и он без проблем был указан в Putty.

cd images_folder
touch étude.png
ls -la // file étude.png listed without any problem

Первый @Simohammedhttc: Вы используете правильные имена! Пожалуйста, не прибегайте к переименованию файлов. Сейчас 2016 год. У нас есть все доступные технологии, чтобы никому не приходилось кастрировать некоторые имена файлов только потому, что они не английские.

Настройки локали выглядят нормально. Тот факт, что у шпатлевки есть проблема с отображением символов, отличных от ASCII (то есть с отображением?), Может быть полностью проблемой шпатлевки. В наши дни не использую шпатлевку, но я помню, как поигрался с настройками шпатлевки, чтобы сделать это правильно.

Я только что проверил, что моя текущая CentOS 7 с радостью будет обслуживать этот URL-адрес умлаута через Apache2:

http://<server>/äöü.txt

Текстовый файл снова содержит те же умляуты. Браузер (Safari) говорит, что кодировка UTF-8. Помещение этого в некоторый HTML также работает:

  • <a href="äöü.txt">äöü.txt</a></td>
  • конечно это тоже: <a href="%c3%a4%c3%b6%c3%bc.txt">äöü.txt</a>

Пожалуйста, попробуйте получить доступ к изображениям напрямую, вставив URL-адрес изображения в адресную строку браузера.

Если это сработает, проверьте, как создаются ссылки на изображения. Взгляните на источник:

  • Убедитесь, что браузер все распознает как UTF-8.
  • Убедитесь, что URL-адреса изображений не искажены какой-либо промежуточной обработкой.