我想用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
任何帮助将不胜感激。
答案 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);