QT中文路径测试结果大全及方法

第一种:windows下最常用最有效,直接使用国标码

#include <QTextCodec>
.....

QString fileName = QFileDialog::getOpenFileName(this,QString("读取匹配原图"),QString("E:\\"),QString("*.jpg *.bmp *.png"));
if(fileName.isEmpty())
{
    QMessageBox::warning(this,QString("warning"),QString("No image was selected!"));
    return;
}

QTextCodec *code = QTextCodec::codecForName("gb2312");
std::string name = code->fromUnicode(fileName).data();

验证失败

方法二:QStringLiteral  这个函数QT5.7不认 失败

方法三:直接使用

//设置ToolButton图像
   // QString pathname="D://高度程序//image//1.png";
  //  QTextCodec *code = QTextCodec::codecForName("gb18030");
   // std::string name = code->fromUnicode(pathname.toUtf8()).data(); // pathname 为QString的中文路径名
用下下面一句话可以解决问题  路径全部中文 包括文件名
QString  fileName= QString::fromLocal8Bit("E:\\游戏动画\\兔子\\兔子2\\兔子.png");
// QTextCodec   *code = QTextCodec:: codecForName("gb18030");  这个不需要

   SetBtnImage(m_pBtn1,fileName );
    SetBtnImage(m_pBtn2,":/image/2.png");
    SetBtnImage(m_pBtn3,":/image/3.png");
    SetBtnImage(m_pBtn4,":/image/4.png");
    SetBtnImage(m_pBtnAnima,":/image/animation.png");

测试结果:OK

打开文件对话框中文路径测试j结果:OK

总结:QT5.7 完全支持中文路径  中文文件名;

编辑器编码  系统编码 随便换都没有问题 挨着测试GBK GB2312  GB18030 UTF-8 任意编码都可以加载中文路径

并不是网上所言的那些方法。所以我们必须重新认识QT

测试中发现QT输出路径有时不是可靠 ,可能会输出到以前打开的项目里,如果调试正常,而在自己工程目录下没有EXE文件,查看运行输出目录可以找到你的EXE文件跑到哪里了

时间: 2024-10-05 05:21:13

QT中文路径测试结果大全及方法的相关文章

sqlite3实现中文路径sql文件导入另类解决方法

1.需求 程序要实现产品离线数据下载,故采用java端直接拼接sql文件,客户端下载sql文件,合并到本地数据库.性能还行局域网十几秒7兆多,但是存在一个sqlite或sql文件保存在中文路径下无法合并的问题 2.解决 主要原因是因为sqlite打开数据库时使用utf8打开,qt普遍采用unicode编码.网上方法较多,这里采用另外一种方法解决,采用相对路径避开中文路径的问题 3.代码片段 1.创建数据库 QString strdbpath(QDir::currentPath() + "/db&

Qt 中文乱码解决大全

源地址:http://blog.csdn.net/xcy2011sky/article/details/7168376 解决中文乱码,最好知道乱码是什么格式比如说:utf-8. 解决方案: 1.让整个应用程序支持中文: 在  QApplication a(argc, argv);后加上以下几句话即可.要包含头文件#include <QTextCodec>. QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"

rapidxml读取包含中文路径的xml解析错误的解决方法

from http://blog.csdn.net/qinwei4072880/article/details/38865179 1.rapidxml不支持中文路径. 2.rapidxml不支持Unicode xml必须为utf-8编码. 解决方法: #ifdef _UNICODE setlocale(LC_ALL, "Chinese-simplified"); // 设置中文环境USES_CONVERSION;file<> doc(W2A(lpszXml)); setlo

Sublime Text 2 运行 Python 脚本中文路径解决方法

在 SublimeText 中直接运行 Python 脚本,出现以下报错提示: Running python -u C:\Documents and Settings\Administrator\桌面\furl.py Traceback (most recent call last): File ".\sublime_plugin.py", line 340, in run_ return self.run(**args) File ".\exec.py", lin

Eclipse+pydev解决中文显示和注释问题的方法大全

Eclipse+pydev解决中文显示和注释问题的方法大全 Eclipse的设置 window->preferences->general->editors->texteditors->spelling->encoding->UTF-8,编辑器的编码格式 window->preferences->workspace->textfile encoding->UTF-8 打开eclipse安装目录->eclipse.ini,末行加上&qu

Qt中文乱码问题(比较清楚,同一个二进制串被解释成不同的语言)

文章来源:http://blog.csdn.net/brave_heart_lxl/article/details/7186631 以下是dbzhang关于qt中文乱码问题原因的阐述,觉得不错: 首先呢,声明一下,QString 是不存在中文支持问题的,很多人遇到问题,并不是本身 QString 的问题,而是没有将自己希望的字符串正确赋给QString. 很简单的问题,"我是中文"这样写的时候,它是传统的 char 类型的窄字符串,我们需要的只不过是通过某种方式告诉QString 这四

解决osgEarth中文显示乱码的几种方法

解决osgEarth中文显示乱码的几种方法 在此感谢那些在路上那个帮助过别人的朋友,谢谢. 方法一: 通过自己写函数转换类型. 下面这三个函数先复制过去吧. void unicodeToUTF8(const std::wstring &src, std::string& result) { int n = WideCharToMultiByte( CP_UTF8, 0, src.c_str(), -1, 0, 0, 0, 0 ); result.resize(n); ::WideCharT

(转)QT中文乱码与国际化支持

Qt内部采用的全Unicode编码,这从根本上保证了多国语界面实现的正确性和便捷性.Qt本身提供的linguist工具,用来实现翻译过程十分方便.MFC中利用资源DLL切换资源,或使用多个RC文件进行不同语言版本编译等方法都十分麻烦,如果你曾经使用过MFC,QT解决多语言问题的便捷性绝对会让你感觉是一种享受.本文讨论以下几个方面内容: 1.  QT中解决中文乱码的方法: 2.  QT中实现国家化支持. 3.  对话框实现多语言 一.       中文乱码 1.  在程序中直接使用中文,需要在程序

关于WWW加载有中文路径的问题

U3D的WWW加载虽然比较强大,功能很多,但是却不支持中文路径.这就有点杯具了,这个BUG到现在还没改过来…… 如果只开发移动端和网页端,支持不支持也没关系.但假设是开发客户端较为大型的游戏,未免会用到Assetbundle加载,一旦用到就涉及用户是否将游戏放在有中文的路径上了. 一旦有中文,所有ASSETBUNDLE都将无法加载成功. ASSETBUNDLE的路径假设有中文…… 方法1: FILESTREAM加载,再转换类型,这个方法还没测试,不过听说即便异步加载也会卡来卡去. 方法2:判断该