Тема, похожая на
Решено: Кодировка в 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.
Не понятно, откуда возникает такая проблема?
apache и русские имена файлов
Модераторы: SLEDopit, Модераторы разделов
-
eddy
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
apache и русские имена файлов
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
-
KiWi
- Бывший модератор
- Сообщения: 2521
- Статус: статус, статус, статус
Re: apache и русские имена файлов
Смотрите что приходит в заголовках -- русские имена в любом случае будут закодированы, так что браузер вполне может кодировать и в CP1251, и в UTF-8.
-
eddy
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: apache и русские имена файлов
На сервер запрос приходит в виде
Код: Выделить всё
/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\xb0enca говорит:
Код: Выделить всё
7bit ASCII charactersи что с этим делать, не знаю
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
-
eddy
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: apache и русские имена файлов
Все, разобрался: для гиперссылок имена файлов преобразую функцией:
Список файлов строю функцией
Теперь буду в свободное время приводить к нормальному внешнему виду список файлов и прикручивать ко всему этому делу mysql.
Код: Выделить всё
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 - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка