问题
通过QFileDialog选取文件路径,打印后出现乱码问题
中间的是我转换后的打印结果
原因
QString 是Qt内置字符类型,是默认用unicode编码的。只要你使用QString创建字符串对象最后都是unicode编码,不管你原来是GBK,GB2312还是utf-8,他会进行默认的转换。
而windows中文版的文件路径用的是gbk编码,所以需要转回到gbk。
解决
注意你的项目文件编码最好是utf-8,如果是gbk就会存在窗口名称等QString为乱码。
添加文本编码头文件,创建编码对象
#include "QTextCodec"
//解决中文路径问题
QTextCodec *code = QTextCodec::codecForName("GB2312");
string name = code->fromUnicode(PathName).data();
传入QString对象,使用string
对象保存转码后的字符串。注意一定要用string!!!
打印结果就会是中文。