[ftp]определить кодировку
Мне кажется, что это слишком древний RFC, попозже ничего не издавалось?
> Как её определяют?
Никак?
---
...Я работаю антинаучным аферистом...
![](/images/graemlins/frown.gif)
Надо либо использовать какую-нибудь библиотеку, которая занимается автоопределением кодировок, либо указывать используемую кодировку вручную.
lftp позволяет в конфиге указывать кодировку для определенных серверов.
Про автоматическое определение не слышал.
Да, по моему, в ftp такая фича не предусмотрена. Там ещё много других проблем с именами файлов.
какую-нибудь библиотеку, которая занимается автоопределением кодировок
Эта штука скорее всего будет плохо работать, там почти нет осмысленного текста, и файлов в не-ascii может быть совсем мало
Можно попробовать догадываться по ОС.
И много ты узнаешь, если вдруг обнаружишь линух или фрю?
---
...Я работаю антинаучным аферистом...
как минимум есть RFC 2640
Можно попробовать догадываться по ОС.На сколько я понимаю, стандартным путём определения ОС является команда SYST?
D:\Chisa\telnet mahoro-san 21
220-Welcome! Friday, the 8th of September 2006, uptime: 01d05:50:44
220 Gene6 FTP Server v3.5.0 (Build 10) on AMD Athlon(tm) XP 3200+ with 1023,453 MBytes RAM ready...
syst
530 Please login with USER and PASS first.
user Anonymous
331 Password required for Anonymous.
pass radist
230-Disk Quota - Current : 18,463 MBytes - Max : 512 MBytes - Available : 493,537 MBytes
230 Hi, Anonymous. You've just successfully logged in.
syst
215 UNIX Type: L8
quit
221-You have used 0.015 seconds of server's CPU time.
221 Goodbye.
Connection to host lost.
D:\Chisa>telnet kai.local 21
220 (vsFTPd 2.0.5)
user Anonymous
331 Please specify the password.
pass radist
230 Login successful.
syst
215 UNIX Type: L8
quit
221 Goodbye.
Connection to host lost.
D:\Chisa>
Эта штука скорее всего будет плохо работать, там почти нет осмысленного текста, и файлов в не-ascii может быть совсем малону enca так-то очень хорошо работает.
небезызвестное русское слово из трёх букв угадывает на любой кодировке
![](/images/graemlins/grin.gif)
Кроме того, для лазания по фтп-папкам, это позволит обойти проблему с именами из вопросительных знаков.
Короче, спасибо за информацию, я понял, что надо по возможности работать в utf8.
хотя иероглифы я думаю будут там вполне актуальны =)
да и определять кодировку ресурса нужно только один раз, и ещё лучше просто задать руками.
можно начать определение когда появятся сиволы >127 те что меньше можно считать уже в utf8.
ну а вобще-то нужно снять дамп с русурса а уже потом его анализировать и всовывать в базу большим куском - так быстрее будет.
хз, у тебя я думаю не возникнет проблем с размером базы из-за utf8Этот вопрос не ко мне, по идее. А поиск по utf8 не дольше работает разве?
Что касается определения по символам с кодом больше 127, это не удобно, кроме того всё-равно будут проблемы с серваками, которые не поддерживают "opts utf8 on".
Короче, проще попытаться установить кодировку сразу после коннекта. Если не получается, то считать, что win1251 (для тех серваков, для которых это не правильно, использовать WinInet, который неоптимально работает, зато "всеяден")
кроме того всё-равно будут проблемы с серваками, которые не поддерживают "opts utf8 on".а кто такое поддерживает?
а кто такое поддерживает?любой сервак, у которого в списке, возвращаемом в ответ на команду FEAT есть слово UTF8
![](/images/graemlins/tongue.gif)
Правда, как показал опыт, перед этой командой надо отправить команду CLNT (не разбирался, это по стандарту или это нововведение виндовых фтп-серваков, тем более что я не знаю доступных в сетке не-виндовых фтп-серваков, которые поддерживают UTF8, уже не говоря про CLNT)
rfc2640
Кстати, может мне кто-то обяснит следующую вещь?
Команда LANG вроде позволяет установить язык. Можно ли с помощью неё задать кодировку. в которой будут возвращаться имена файлов? (напрмер, сказать серверу, что он должен передавать имена файлов в win1251)
Кстати, может мне кто-то обяснит следующую вещь?В rfc про эту команду говорится, что с помощью неё можно менять язык, на котором будут выводиться сообщения типа "230 Login successful". К кодировке имён файлов это отношения не имеет.
Команда LANG вроде позволяет установить язык. Можно ли с помощью неё задать кодировку. в которой будут возвращаться имена файлов? (напрмер, сказать серверу, что он должен передавать имена файлов в win1251)
Оставить комментарий
Andbar
Листал RFC-959, не нашел там никакого указания на возможность узнать кодировку, используемую на сервере. Может невнимательно читал.Как её определяют?