Ошибка: Failed to parse the Currency Converter XML document.
$11 694.96
|
Ошибка: Failed to parse the Currency Converter XML document.
$9 368.26
|
Ошибка: Failed to parse the Currency Converter XML document.
$976.78
|
Unix+ Samba + ftpd, проблемы и решения
Есть такая проблема: сложно найти ftpd, понимающий перекодировку имен файлов. Если хранить файлы на сервере в koi8, то ftpшник выдает винде крякозябры. Если хранить в CP1251, то ftp не передает букву «Я», считая ее управляющим символом.
Как решать?
Проблема буквы я возникает в случае, если ftpd весь сетевой i/o пропускает через telnet-фильтр, где буква Я управляющий символ.
В том числе к таким серверам относится ProFtpd
1. Управляющие символы в телнете называются IAC (Is A Command)
2. Распаковываем исходники и делаем поиск по строке IAC
3. Находим 2 файла: netio.c и netio.h, где эта строка встречается.
4. Смотрим файл netio.c и находим там следующий код:
switch (mode) {
case IAC:
switch (cp) {
case WILL:
case WONT:
case DO:
case DONT:
mode = cp;
continue;
case IAC:
mode = 0;
break;
default:
/* Ignore */
mode = 0;
continue;
}
break;
case WILL:
case WONT:
pr_netio_printf(out_nstrm, «%c%c%c», IAC, DONT, cp);
mode = 0;
continue;
case DO:
case DONT:
pr_netio_printf(out_nstrm, «%c%c%c», IAC, WONT, cp);
mode = 0;
continue;
default:
if (cp == IAC) {
mode = cp;
continue;
}
break;
}
5. Путем вдумчивого рассматривания понимаем, что именно эти строчки отвечают за проверку на телнет-вшивость.
6. Удаляем все это безобразие.
7. Компилим и радуемся!
В итоге имеем:
Все названия лежат на юникс-машине в CP1251- кодировке. Для передачи их винде по фтп ничего не меняется, и буква «Я» исправлена. Для передаче по Самбе используем следующие настройки:
display charset = CP1251
unix charset = CP1251
dos charset = CP866