Ссылки на русские файлы

  • Автор темы Автор темы maxon
  • Дата начала Дата начала

maxon

Новичок
Ссылки на русские файлы

Вывожу содержимое директории на экран в виде ссылок на файлы1.

Чтобы ссылки правильно кликались делаю rawurlencode($file).

При клике по ссылке на файл "русский.doc" получаю слудующее:

IE - сохранить файл ".doc"
Opera - сохранить файл "%F0%F3%F1%F1%EA%E8%E9.doc"
Firefox - сохранить файл "русский.doc"

Как сделать, чтобы во всез браузерах работало нормально.
 
Я знаю как сделать так, чтобы об этом не думать -
хранить имена файлов в транслите. А повлиять на серверной стороне на поведение различных браузеров, я думаю, не получится.
 
Exel
Блин, а причем здесь броузер вообще?


maxon
Тебе настройки сервера смотреть надо. И скрипт писать исходя из этого.... Представь, что все это должно происходить без участия броузера, а потом тот же скрипт адаптируешь..
Кинь код, а то честно говоря вообще не совсем понятно, что ты пытаешся сделать...
 
у меня проблема с созданием ссылок на русские файлы и директории, расположенные на фтп. хранятся ссылки в utf-8 (бд mysql) и сама страница в utf-8.

Попытки анализа всевозможных пользовательских функций а также комбинирование их с различными iconv, urlencode/rawurlencode ещё больше запутали.

оригинал ftp://10.20.2.158/тест
то что выводится если без преобразований вывести ссылку из базы - ftp://10.20.2.158/%D1%82%D0%B5%D1%81%D1%82
если заходить на фтп браузером то ссылка выглядит так (windows-1251) - ftp://10.20.2.158/%F2%E5%F1%F2

По идее необходимо UTF-8 -> windows-1251 -> URL, при этом оставив слеши...
 
> По идее необходимо UTF-8 -> windows-1251 -> URL
И в чём проблема?
 
urlencode конвертит слэши. заменять обратно на слеш сконвертированный символ? или есть более элегантное решение?

и потом urlencode и rawurlencode добавляют слэш в конце, который тоже придётся удалять.

PHP:
str_ireplace("%2f", "/", rawurlencode(iconv("UTF-8", "windows-1251", "/тест")));
PHP:
str_ireplace("%2f", "/", urlencode(iconv("UTF-8", "windows-1251", "/тест")));
- дают левый результат
 
Автор оригинала: WP
Заменять.

-~{}~ 11.12.06 09:14:

Какой левый?
мда. действительно работает. огромное спасибо, наверняка заработался...

решил сделать так:

PHP:
implode("/", array_map("rawurlencode", explode("/", iconv("UTF-8", "windows-1251", $dir_path))));
 
maxon
Тебе настройки сервера смотреть надо. И скрипт писать исходя из этого.... Представь, что все это должно происходить без участия броузера, а потом тот же скрипт адаптируешь..
Кинь код, а то честно говоря вообще не совсем понятно, что ты пытаешся сделать... [/QUOTE]
Сижу на apache-1.3.33_2 их портов.
Код такой:

PHP:
$dir = opendir("../upload");

while($file = readdir($dir))	{
if(($file != ".") && ($file != ".."))	{

echo "<a href=./upload/" . rawurlencode($file) . ">" . $file. "</a>";

	}
}

closedir($dir);

Просто распечатываю список загруженных файлов из папки upload (ОС FreeBSD).
При выводе на экран использую rawurlencode, чтобы ссылки на русскоименные файлы работали нормально.
Но при использовании ссылки на русский файл "русский файл.doc" мне предлагают сохранить файл с именем ".doc", т.е. при передаче имени файла в форму сохранения файлов, терются кириллические символы.
 
Автор оригинала: maxon
Просто распечатываю список загруженных файлов из папки upload (ОС FreeBSD).
При выводе на экран использую rawurlencode, чтобы ссылки на русскоименные файлы работали нормально.
Но при использовании ссылки на русский файл "русский файл.doc" мне предлагают сохранить файл с именем ".doc", т.е. при передаче имени файла в форму сохранения файлов, терются кириллические символы.
Так нашли ответ или нет? У меня такая же проблема.
 
Автор оригинала: CHEM_Eugene
Так нашли ответ или нет? У меня такая же проблема.
И что ты предпринял, чтобы её решить? Раздражают такие "просители помощи".

Попробуйте:
PHP:
header("Content-Disposition: attachment; filename=здесь.имя");
header("Content-type: application/octet-stream");
readfile('путь к файлу');
exit;
 
Сверху