php, кодировка URL

Модератор: Модераторы разделов

kosteel
Сообщения: 330
Статус: Root Lamer
ОС: Debian GNU/Linux 5.02 amd64

php, кодировка URL

Сообщение kosteel »

Доброго времени. Пишу скрипт на PHP, который собирает список директорий и файлов в этих директориях и выводит их в веб форму. Причем названия файлов выводятся в виде ссылок на эти файлы. Проблема в том, что большинство имён файлов и директорий кириллические (windows-1251), соответственно при клике на ссылку сервер выдает сообщение вида:

Код: Выделить всё

Not Found

The requested URL /library/РазбоÑ?/Стоахостические пÑ?оцессы/Рытов С.М. Введение в статистическую Ñ?адиофизику. Часть 1. Случайные пÑ?оцессы 1976.pdf was not found on this server.

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

Код: Выделить всё

/library/%ca%ee%ed%f4%e5%f0%e5%ed%f6%e8%e8/_%ce%e1%f9%e0%ff%ff%20%e8%ed%f4%ee%f0%ec%e0%f6%e8%ff/


Пробовал конвертировать запрос (строку которая пишется в тэг <a href></>) с помощью iconv - эффект есть, но так и не смог найти нужной комбинации кодировок (из какой в какую) чтобы URL приняла нужный вид.

Помогите, будьте так добры.
Ничто не вечно под рутом
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: php, кодировка URL

Сообщение RasenHerz »

С помощью iconv декодируете строку и скармливаете ее urlencode
Спасибо сказали:
kosteel
Сообщения: 330
Статус: Root Lamer
ОС: Debian GNU/Linux 5.02 amd64

Re: php, кодировка URL

Сообщение kosteel »

В общем urlencode отчасти помог, однако пришлось сделать вот что:

Код: Выделить всё

$URL = urlencode($URL);
$URL = substr($URL,4);
$URL = preg_replace("/[+]/","%20",$URL);
$URL = preg_replace("/%2F/","/",$URL);

индусизм во всей красе, может я безбожно туплю и ларчик куда проще открывался?
Ничто не вечно под рутом
Спасибо сказали: