FTP搭建服务器和显示中文

显示中文问题可以看到很多其他文章,很多描述各种编码转换,但是我的电脑实测都不成功。后来发现源代码是默认服务端使用的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

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

相关推荐
得鹿梦鱼、7 个月前
Qt案例 使用QFtpServerLib开源库实现Qt软件搭建FTP服务器,使用QFTP模块访问FTP服务器
qt·qftp·qftpserver