• Qt5 加载中文路径以及中文文本显示乱码问题


    关于Qt中文乱码的问题,网上查找的解决方案,千篇一律的是:

    QTextCodec::setCodecForLocale(QTextCodec::codecForName("utf-8"));

    但是,实际上这种方案并不能彻底解决问题。

    经过自己的测试,总结了一个乱码问题的解决方案:

    在获取中文路径时,使用: 

    QString::fromLocal8Bit()
    

    在转化为std::string使用时,使用下面方法转换,这样使用FILE、ifstream等读取文件时,不会出错

    QStirng::toLocal8Bit()
    

    当把std::string再输出到Qt界面时,使用下面方法转换后,显示不会出现乱码

    QString::fromLocal8Bit(std::string.c_str())
    

    测试代码如下:

            // 将中文路径赋给 QString
    	QString path = QString::fromLocal8Bit("C:\Users\ZT_007\Desktop\效率问题.txt");
    
    	printf("%s.
    
    ", path.toLocal8Bit().data());
    
    	// 将 QString 转 std::string
    	std::string test = path.toLocal8Bit().data();
    	printf("%s.
    
    ", test.c_str());
    
    	// 将 std::string 转 QString
    	QString test2 = QString::fromLocal8Bit(test.c_str());
    	printf("%s.
    
    ", test2.toLocal8Bit().data());    
    

    测试结果:

  • 相关阅读:
    在关闭窗体时弹出对话框
    使应用程序在进程中消失
    禁用窗口上的关闭按钮
    洛谷P1080 国王游戏
    洛谷P1443 马的遍历
    算法竞赛入门经典第二版 随笔1
    AcWing 794. 高精度除法
    AcWing 793. 高精度乘法
    AcWing 792. 高精度减法
    AcWing 791. 高精度加法
  • 原文地址:https://www.cnblogs.com/xingzhensun/p/11719769.html
Copyright © 2020-2023  润新知