PDA

Показать полную графическую версию : IdFTP проблемы с кирилицей в названиях


OkSherd
10-05-2012, 16:14
Доброго времени суток уважаемые формчане.
Столкнулся с проблемой такого характера:
ФТП клиент написан на delphi 2010, через компонент TIdFTP организована передача файла

procedure TFFtp.Button2Click(Sender: TObject);
var
fn:string;//переменная имени файла
begin
fn:=ExtractFileName(Edit1.Text);

...
IdFTP1.Put(Edit1.Text, Edit2.Text + fn ,true);
...
end

Все работает если имя передаваемого файла написано латыницей. С кирилицей в имени выдает ошибку:
http://s019.radikal.ru/i644/1205/14/6477086de720.jpg

Опробовал разные ФТП сервера на Винде и на Линуксе проблема та же. Есть догадки что проблема в кодировке имен файлов. (IdFTP)
Можно ка то обойти эту проблему?

ferget
10-05-2012, 17:29
попробуйте строку в ansi перекодировать перед отправкой

OkSherd
22-05-2012, 12:02
ferget Если я не ошибаюсь то Edite и так записана строка в ansi кодировке по умолчанию.

Drongo
13-06-2012, 13:59
OkSherd, В свойстве Charset попробуйте установить RUSSIAN_CHARSET

OkSherd
24-10-2012, 17:59
OkSherd, В свойстве Charset попробуйте установить RUSSIAN_CHARSET »
Увы не помогло. Вопрос так и не решился. На фтп серверах, поднятых на Unix системах файлы с кирилицей передаются, но название меняется на набор символов:
http://s45.radikal.ru/i107/1210/b4/85ea4f98b5bc.jpg
На фтп сервера на Windows системах совсем отказываются принимать файл.

AlexVol
25-10-2012, 11:47
ferget Если я не ошибаюсь то Edite и так записана строка в ansi кодировке по умолчанию. »
Вот тут как раз ошибаетесь: там обычный String. И дело не в кодировке а в формата данных.
Надо использовать строку не из Edit, а через промежуточную переменную явного типа AnsiString.
Автопреобразования строк иногда выдают не очевидные результаты. Особенно в выражениях.




© OSzone.net 2001-2012