显示中文问题可以看到很多其他文章,很多描述各种编码转换,但是我的电脑实测都不成功。后来发现源代码是默认服务端使用的utf8编码转换的,实际上我的系统使用GBK编码,被错误转换后无法还原原始字节,所以各种编码转换都不成功!
1.开启Windows10的ftp功能

2.创建ftp访问用户



3.增加ftp站点





4.防火墙设置


5.使用QFtp组件编写测试代码
cpp
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QFtp ftp;
QString dataName = QCoreApplication::applicationDirPath() + "/data.im3";
ftp.connectToHost("192.168.0.99", 21);
int login = ftp.login("ftpUser", "123456");
int put = -1;
int list = -1;
QObject::connect(&ftp, &QFtp::commandFinished, [&](int _id, bool _error)
{
qDebug() << "ID:" << _id << " Finished! " << _error;
if(_id == login)
{
list = ftp.list();
}
});
//这里显示便利的服务端文件名字
QObject::connect(&ftp, &QFtp::listInfo, [&](const QUrlInfo & info)
{
qDebug() << info.name();
});
return a.exec();
}
6.不能显示中文原因

源代码是按照QString::fromUtf8对网络字节进行转换,实际上windows服务端默认是GBK编码。此时源字节被错误转换,没法修复了。即使在外部使用QString::toUtf8也无法还原回原始字节。
6.1方案1
将此处源代码修改为QString::fromLocal8bit,可以成功显示中文。但是修改源代码不知道会不会带来其他问题,暂未发现。
6.2方案2
修改windows默认编码方式为UTF8


重启后生效,可以显示中文,会不会带来其他问题暂时未知。