简述
中文乱码问题,一直是很困扰人的;之前在Windows搭建了个ftp服务器,并且写了个客户端带有上传下载等功能,但由于都是在Windows端,所以不需要考虑平台不同编码转换的问题;但是最近有很多朋友问到了在Linux下实现访问Windows服务器中文乱码导致的问题,这里简单做了下记录希望可以对大家有所帮助。
效果
![](https://img-blog.csdnimg.cn/img_convert/864d172ab8610bff1305ca9ac9626dee.gif)
![](https://img-blog.csdnimg.cn/img_convert/d0f96ffcfde38ca94942b30886d65f7d.gif)
代码
Windows端:
// 解决windows ftp中文乱码问题
QString cmd = "向ftp服务器发送的指令";
ftp.cd(QString::fromLatin1(cmd.toLocal8Bit()));
QString data = "接收ftp服务器回发的数据";
QString content = QString::fromLocal8Bit(data.toLatin1());
Linux端:
// 解决windows ftp中文乱码问题
// 不确定本地是utf8编码就先设置utf8格式,确定就不需要加
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
// 确定本地是utf8编码
QString cmd = "向ftp服务器发送的指令";
// utf8->unicode
QString sUnicode = QTextCodec::codecForLocale()->toUnicode(cmd.toLocal8Bit());
// unicode->gbk
QByteArray sGbk = QTextCodec::codecForName("gbk")->fromUnicode(sUnicode);
ftp.cd(QString::fromLatin1(sGbk));
// 确定本地是utf8编码
QString data = "接收ftp服务器回发的数据";
// gbk->unicode
QString sUnicode = QTextCodec::codecForName("gbk")->toUnicode(data.toLatin1());
// unicode->utf8
QByteArray sUtf8 = QTextCodec::codecForLocale()->fromUnicode(sUnicode);
其他
对于搭建FTP服务不太了解的可以看看:https://blog.csdn.net/Ilson_/article/details/97818689
QFtp实现文件上传、下载、新建文件夹、重命名、删除和刷新等功能:https://blog.csdn.net/Ilson_/article/details/98371848