QFile :: open失败,带有unicode文件名

时间:2012-11-16 09:08:20

标签: c++ qt unicode filenames

我想用QFile :: Open打开一个文件,我的文件名是unicode:

           QString fname(QFile::decodeName("D:/أحدالأنشطة.txt"));
           QFile qFile(fname);

           bool b=qFile.open(QIODevice::ReadOnly);
           if(b)
           {
               FILE* filedesc = fdopen(qFile.handle(), "rb");
               if(filedesc!=NULL)
               {
                   char* nb=(char*)malloc(2*sizeof(char));
                   qDebug()<<"opened ";
                   size_t size=fread(nb,sizeof(char),2,filedesc);
                   fclose(filedesc);
                   qDebug()<<"filedesc closed size "<<size<<"nb "<<QString::fromAscii(nb,2);
                   nb=NULL;
                   free(nb);

               }else qDebug()<<"filedesc failed   error"<<strerror(errno);


            }else
                qDebug()<<"qFile failed   error"<<strerror(errno);

失败了,我得到了:

qFile failed   error No error 

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

如果源文件是UTF-8编码的,那么您可以这样做:

QString fname(QString::fromUtf8("D:/أحدالأنشطة.txt"));

如果是UTF-16,那么:

QString fname(QString::fromUtf16("D:/أحدالأنشطة.txt"));

如果源文件既不是UTF-8也不是UTF-16,请尝试改为:

QString fname(QString::fromLocal8Bit("D:/أحدالأنشطة.txt"));

如果这也不起作用,那么你需要找出编辑器正在使用的字符集。

答案 1 :(得分:1)

如果数据位于WCHAR数组中,请使用QString filename((QChar*) yourWcharData);