Как правильно ссылаться на файлы с акцентами в их именах в среде LAMP - PullRequest
0 голосов
/ 10 февраля 2009

Я создал скрипт php, который просматривает файлы в каталоге и выводит на них ссылки. Имена файлов на испанском языке, поэтому некоторые из них содержат такие символы, как á, é и т. Д.

Мой скрипт отлично работает на моем компьютере разработчика, который является windows + apache + php, однако он не работает на сервере моего хостинга, который является linux + apache + php, он не находит файл.

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

РЕДАКТИРОВАТЬ: Подробнее об ошибке на компьютере разработчика при использовании urlencode ().

Кажется, что есть 2 ошибки, одна, когда имя файла содержит символы, такие как á, é и т. Д. И другая, когда имя файла имеет пробелы.

Имя файла с пробелами (т. Е. 'Calidad Total .doc') получает следующую ссылку http://localhost/temarios/docs/Calidad+total+.doc, которая дает мне ошибку 404 файл не найден. Замена «+» на «s» в адресной строке делает его работоспособным.

Имя файла с акцентированными символами (т. Е. Economía.doc) получает ссылку http://localhost/temarios/docs/Econom%EDa.doc, которая дает мне ошибку 403 Forbidden. Замена '% ED' на 'í' в адресной строке делает его работоспособным.

Я протестировал бета-версию Firefox 3 и IE8 для Windows 7, и то же самое происходит в обоих браузерах.

1 Ответ

1 голос
/ 10 февраля 2009

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

"URL-адреса пишутся только с использованием графических печатных символов набора кодированных символов США-ASCII."

Возможно, будет мудро опубликовать подробности об ошибке, которую вы получите, на своем компьютере разработчика и выяснить, в чем дело.

...