1

我想用 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 

任何帮助将不胜感激。

4

2 回答 2

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"));

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

于 2012-11-16T09:23:03.357 回答
1

如果数据在WCHAR数组中,则不仅仅是使用QString filename((QChar*) yourWcharData);

于 2012-11-19T13:13:14.453 回答