Название: передача по ftp. Не хочет русские имена файлов. Отправлено: Yurko_San от Апрель 03, 2017, 12:19 Добрый день! Есть не хитрый код для отправки на ftp-сервер, но не хочет отправлять файлы, где есть русские символы. Не подскажите как победить такую проблему. Сам застрял. Код:
Код: void ServerApiFacade::ftpPut(const QString &localFileName, const QString &serverFileName) При передаче возникает ошибка : Ошибка в процессе отгрузки : Uploading file failed: Cannot STOR. . Error state: 201 Название: Re: передача по ftp. Не хочет русские имена файлов. Отправлено: qate от Апрель 03, 2017, 12:46 может ftp сервер не понимает русские символы ?
чего пишет reply->errorString() в ServerApiFacade::finishFtp ? Название: Re: передача по ftp. Не хочет русские имена файлов. Отправлено: Yurko_San от Апрель 03, 2017, 12:54 Пишет:
Ошибка в процессе отгрузки : Uploading file failed: Cannot STOR. . Error state: 201 При отправке файлов с латиницей всё нормально, так же при отправке русских файлов из Тотал Командера на тот же сервер тоже всё нормально. Название: Re: передача по ftp. Не хочет русские имена файлов. Отправлено: qate от Апрель 03, 2017, 13:06 я бы тогда глянул трафик через wireshark
версия qt какая ? Название: Re: передача по ftp. Не хочет русские имена файлов. Отправлено: Yurko_San от Апрель 03, 2017, 13:07 Версия Qt 5.5.0
Название: Re: передача по ftp. Не хочет русские имена файлов. Отправлено: qate от Апрель 03, 2017, 13:17 Название: Re: передача по ftp. Не хочет русские имена файлов. Отправлено: Yurko_San от Апрель 03, 2017, 13:20 Да? Это хорошо. Надо бы обновиться. А можно как-то непосредственно из Qt Creatora обновиться? На что нажать?
Название: Re: передача по ftp. Не хочет русские имена файлов. Отправлено: qate от Апрель 03, 2017, 13:28 А можно как-то непосредственно из Qt Creatora обновиться? На что нажать? Help -> Report Bug ) Название: Re: передача по ftp. Не хочет русские имена файлов. Отправлено: ssoft от Апрель 03, 2017, 13:33 Само значение serverFileName правильно сформировано?
Код
Название: Re: передача по ftp. Не хочет русские имена файлов. Отправлено: qate от Апрель 03, 2017, 13:44 Само значение serverFileName правильно сформировано? у меня работало и по "неправильному" тут наверно важно в чем исходники, у меня utf8, потому все ок а у ТС наверно cp1251 ? Название: Re: передача по ftp. Не хочет русские имена файлов. Отправлено: Yurko_San от Апрель 03, 2017, 13:48 Попробовал и так - не помогло пока.
Название: Re: передача по ftp. Не хочет русские имена файлов. Отправлено: Yurko_San от Апрель 03, 2017, 14:02 Да, исходники в Utf-8, но я так же брал имя и из строки
Код: QApplication::setOverrideCursor(Qt::WaitCursor); Та же ошибка, если есть русские буквы в имени: Ошибка в процессе отгрузки : Uploading file failed: Cannot STOR. . Error state: 201 Название: Re: передача по ftp. Не хочет русские имена файлов. Отправлено: Yurko_San от Апрель 04, 2017, 07:13 Установил Qt 5.8.0 русские файлы стали отправляться, но на сервере они отображаются всё-равно криво: было Кемерово.xlsx, стало - Кемерово.xlsx
Название: Re: передача по ftp. Не хочет русские имена файлов. Отправлено: Yurko_San от Апрель 04, 2017, 07:35 Исходный файл в UTF-8, имя файла: serverFileName = "Кемерю 12 44.xlsx";
При отправке почему-то кодирует в Windows-1251 и на сервере уже отображается как Кемерю 12 44.xlsx Как избежать кодирования в Windows-1251 перед отправкой? По всей видимости что-то в этом коде нужно поправить: Код: serverFileName = "Кемерю 12 44.xlsx"; Название: Re: передача по ftp. Не хочет русские имена файлов. Отправлено: qate от Апрель 04, 2017, 08:26 При отправке почему-то кодирует в Windows-1251 и на сервере уже отображается как Кемерю 12 44.xlsx отображается чем ? насколько я помню ftp серверу наплевать на кодировку, её определяет смотрящий Название: Re: передача по ftp. Не хочет русские имена файлов. Отправлено: ssoft от Апрель 04, 2017, 11:53 Установил Qt 5.8.0 русские файлы стали отправляться, но на сервере они отображаются всё-равно криво: было Кемерово.xlsx, стало - Кемерово.xlsx Может нужно задать нужный кодек? Код: QTextCodec::setCodecForCStrings( QTextCodec::codecForName( "utf-8" ) ); |