Delphi - IdFTP проблемы с кирилицей в названиях

Ответить
Аватара пользователя
OkSherd

Delphi - IdFTP проблемы с кирилицей в названиях

Сообщение OkSherd »

Доброго времени суток уважаемые формчане.

Столкнулся с проблемой такого характера:

ФТП клиент написан на 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

Все работает если имя передаваемого файла написано латыницей. С кирилицей в имени выдает ошибку:

Изображение



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

Можно ка то обойти эту проблему?
Аватара пользователя
ferget

Re: Delphi - IdFTP проблемы с кирилицей в названиях

Сообщение ferget »

попробуйте строку в ansi перекодировать перед отправкой
Аватара пользователя
ferget

Re: Delphi - IdFTP проблемы с кирилицей в названиях

Сообщение ferget »

ferget Если я не ошибаюсь то Edite и так записана строка в ansi кодировке по умолчанию.
Аватара пользователя
Drongo

Re: Delphi - IdFTP проблемы с кирилицей в названиях

Сообщение Drongo »

OkSherd, В свойстве Charset попробуйте установить RUSSIAN_CHARSET
Аватара пользователя
OkSherd

Re: Delphi - IdFTP проблемы с кирилицей в названиях

Сообщение OkSherd »

Цитата Drongo:



OkSherd, В свойстве Charset попробуйте установить RUSSIAN_CHARSET
Delphi - IdFTP проблемы с кирилицей в названиях




Увы не помогло. Вопрос так и не решился. На фтп серверах, поднятых на Unix системах файлы с кирилицей передаются, но название меняется на набор символов:

Изображение

На фтп сервера на Windows системах совсем отказываются принимать файл.
Аватара пользователя
AlexVol

Re: Delphi - IdFTP проблемы с кирилицей в названиях

Сообщение AlexVol »

Цитата OkSherd:



ferget Если я не ошибаюсь то Edite и так записана строка в ansi кодировке по умолчанию.
Delphi - IdFTP проблемы с кирилицей в названиях




Вот тут как раз ошибаетесь: там обычный String. И дело не в кодировке а в формата данных.

Надо использовать строку не из Edit, а через промежуточную переменную явного типа AnsiString.

Автопреобразования строк иногда выдают не очевидные результаты. Особенно в выражениях.
Ответить

Вернуться в «Программирование и базы данных»