如何打开具有unicode符号名称的文件

Nar*_*rek 1 c++ unicode qt

我为该.exe文件创建了一个.exe文件和相关的.myFile扩展名.我想双击任何.myFile文件,并通过.exe打开该文件.为此我做了以下事情:

int main(int argc, char *argv[])
{
    QString fileName(QObject::tr(argv[1]));
    if ( fileName != "" )
    {
        mainWin.loadFile(fileName);
    }
.................. 
}
Run Code Online (Sandbox Code Playgroud)

但是当我用unicode字符命名我的文件时(例如"Здравствуй.myFile"),而不是"Здравствуй"你可以看到"????????".如何解决这个问题呢?我知道这是解决问题的原因,例如,MS Word就是这样做的.

MSa*_*ers 8

之前关注的答案int main(int argc, char** argv)是不必要的复杂.Qt有更好的选择.

从Qt文档:在Windows上,它QApplication::arguments()不是从argv/argc的内容构建的,因为内容不支持Unicode.相反,arguments()是从GetCommandLine()的返回值构造的.

因此,正确的答案是使用qApp.arguments().at(1),它将为您提供QString中的Unicode文件名.