имена файлов utf8 и греческие символы - PullRequest
1 голос
/ 21 сентября 2011

Я пытаюсь понять это, но я довольно озадачен.У меня есть каталог на моем веб-сайте, содержащий pdf-файлы с греческими именами файлов (например, ΤΙΜΟΚΑΤΑΛΟΓΟΣ.pdf). Я хочу, чтобы на веб-странице были ссылки на файлы, чтобы пользователи могли открывать или сохранять файлы.Пока я могу перечислить файлы в порядке, но если я нажму на них, я получу ошибку 404.Как будто сервер думает, что их там нет, хотя они есть.Я понимаю, что это, вероятно, проблема с кодировкой, но кроме этого я не уверен, что искать.Кодировка сайта - utf-8, и для корректного отображения имен файлов мне пришлось использовать mb_convert_encoding ($ file-> filename, 'utf8', 'iso-8859-7').

Это URL: http://www.med4u.gr/timokatalogoi/ Это список каталогов: http://www.med4u.gr/pricelists/

Сайт основан на Joomla и размещен на сервере Linux.

Есть идеи?

Ответы [ 3 ]

3 голосов
/ 21 сентября 2011

ISO-8859- * ДОЛЖЕН УМИРАТЬ! (Это не личное!) Делай все в UTF-8. Все. По уважительной причине некоторые из нас расстраиваются, когда видят, что их используют, особенно Latin-1 (8859-1), который кусает многих людей. Я думаю, вам было бы очень полезно просто сбросить их и перейти к UTF-8.

Что нужно проверить:

  1. Храните ваши файлы в кодировке UTF-8: обычно с этим нет проблем.
  2. Убедитесь, что ваш сервер отправляет файлы с кодировкой UTF-8: добавьте header('Content-Type: text/html;charset=UTF-8'); в верхней части вашего PHP.
  3. На всякий случай, если кто-то сохранит вашу страницу, в этом случае полезно поместить то же самое в тег <meta> в head.
  4. Проверьте все это в своем браузере: щелкните правой кнопкой мыши, просмотрите информацию о странице и убедитесь, что кодировка верна.

CPanel очень гибок, так что все это выполнимо без особой суеты. Не стесняйтесь комментировать, если вы хотите более подробно.

Если у вас есть база данных, есть еще несколько прыжков, но это того стоит. С UTF-8 вам никогда не придется беспокоиться, и это окончательный, ориентированный на будущее способ ведения дел.

1 голос
/ 21 сентября 2011

Давайте предположим, что имя файла на диске - aa.pdf, но ваше преобразование отображает его как ab.pdf. Вам нужно либо отменить преобразование, чтобы оно указывало обратно на aa.pdf, либо указать серверу переназначить или перенаправить запросы на ab.pdf в этот файл. Или, если хотите, переименуйте файл в ab.pdf, если ваша файловая система может обработать это имя.

0 голосов
/ 21 сентября 2011

Это определенно проблема кодирования.Вам потребуется экранировать URL-адрес или преобразовать его в любой набор символов, распознаваемый вашим сервером.

например, «ΤΙΜΟΚΑΤΑΛΟΓΟΣ LASER.pdf» в iso-8859-7 = «ÔÉÌÏÊÁÔÁËÏÃÏÓ LASER.pdf» в iso-8859-1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...