1

QFile :: Openでファイルを開きたいのですが、ファイル名はユニコードです。

           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

データがWCHAR配列内にある場合は、単に使用するだけではありませんQString filename((QChar*) yourWcharData);

于 2012-11-19T13:13:14.453 に答える
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 に答える