Linux上Qt读取中⽂⽂件路径问题
最近在搞跨平台的事,把⼀个应⽤程序,从Windows,移植到Linux,使⽤的是Qt。但是遇到⼀个问题,QFile::exists⽂件,⽼是返回false,我已经确定⽂件在⽬录下存在,后来是这么解决的。
⽅法1
1. 把cpp⽂件的编码,转成UTF-8。原来为GBK/Windows…编码。这个步骤是⼤家容易忘记的
2. setCodecForLocale,为UTF-8。
3. 调⽤函数时,使⽤QString::fromLocal8Bit。
下⾯是对应的代码。
怎么将linux系统改成中文
QTextCodec::setCodecForLocale( QTextCodec::codecForName("UTF-8" ));
QString filePath = QString::fromLocal8Bit("中⽂.txt");
if(!QFile::exists(filePath) )
QMessageBox::warning(NULL, "warning", "file not exist");
中⽂路径问题解决了。但是,原来的程序,使⽤的编码为GBK2312,改成UTF-8之后,界⾯上⼀堆乱码。所以我在读⽂件时,临时改成UTF-8,读完之后,⼜改回原来的编码。
QTextCodec* oldCodec = QTextCodec::codecForLocale();
//解析⽂件
QTextCodec::setCodecForLocale(oldCodec);
⼤家针对这个问题,如果有什么好的解决⽅案,⿇烦告知⼀下。就是Linux上,要做两件事:
1. 读取中⽂⽂件路径。
2. 界⾯显⽰中⽂。但是原来的代码,全部⽤的GBK2312编码,如果所有汉字都进⾏GBK2312转UTF-8,⼯作量很⼤。
⽅法2
1. cpp⽂件的编码格式,设置为GBK/Windows…
2. setCodecForLocale,为UTF-8。
3. 指定中⽂路径的编码为GBK,然后通过QTextCodec的函数toUnicode转成Unicode路径,设置到QFile中。
const char* filePath("中⽂.txt");
QTextCodec* codecGBK = QTextCodec::codecForName("GBK");
QString filePathUnicode = codecGBK->toUnicode(filePath);
if(!QFile::exists(filePathUnicode))
QMessageBox::warning(NULL, "warning", "file not exist");

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。