apache и русские имена файлов

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

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

Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

apache и русские имена файлов

Сообщение eddy »

Тема, похожая на
Решено: Кодировка в Apache, однако есть некоторое отличие.
Проблема в том, что я хочу сделать файлохранилище, поддерживающее smb, ftp и http.
Список файлов и директорий, хранящихся на сервере, генерируется простеньким CGI, однако, как только встречается имя, написанное русскими буквами ("https://my.server/Inc/Компутер_для_дома"), сервер не может найти файл.
Если просто просмотреть содержимое директории (пока я эту функцию не отключаю), получаем ссылку в таком виде:
"https://my.server/Inc/%eb%cf%cd%d0%d5%d4%c5%d2_%c4%cc%d1_%c4%cf%cd%c1". И она работает.
Системная кодировка - КОИ8, кодировка апача по умолчанию - та же, в настройках autoindex'а также прописана кои8.
Не понятно, откуда возникает такая проблема?
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: apache и русские имена файлов

Сообщение KiWi »

Смотрите что приходит в заголовках -- русские имена в любом случае будут закодированы, так что браузер вполне может кодировать и в CP1251, и в UTF-8.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: apache и русские имена файлов

Сообщение eddy »

KiWi писал(а):
07.12.2009 19:21
Смотрите что приходит в заголовках -- русские имена в любом случае будут закодированы, так что браузер вполне может кодировать и в CP1251, и в UTF-8.

На сервер запрос приходит в виде

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

/var/www/tmp/Incoming/\xd0\x9a\xd0\xbe\xd0\xbc\xd0\xbf\xd1\x83\xd1\x82\xd0\xb5\xd1\x80_\xd0\xb4\xd0\xbb\xd1\x8f_\xd0\xb4\xd0\xbe\xd0\xbc\xd0\xb0

enca говорит:

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

7bit ASCII characters

и что с этим делать, не знаю :(
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: apache и русские имена файлов

Сообщение eddy »

Все, разобрался: для гиперссылок имена файлов преобразую функцией:

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

conv_ ()
{
    echo $* | hexdump -ve '"\\" 1/1 "%02x"' | sed -e "s/\\\/%/g" -e "s/%2f/\//g" -e "s/%0a//"
}

Список файлов строю функцией

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

linkfile ()
{
    D=`conv_ $DIR/$*`
    echo -e "<H3 align=center><a href=\"$D\" target=\"client\">\c"
        Name "$*"
    echo "</a></H3>"
}

Теперь буду в свободное время приводить к нормальному внешнему виду список файлов и прикручивать ко всему этому делу mysql.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали: