如何将QT主函数argv参数作为unicode编码格式

时间:2016-09-07 21:15:52

标签: c++ qt unicode utf-8

我是QT的新手,我遇到编码问题。这是我的主要功能

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;

    const char *charArray = "çşüğ";

    QStrıng str1(charArray);
    QString str2(argv[1]);
}

argv[1]值与调用者exe端的charArray相同。但是如果我控制str1str2str1正在寻找çşüğ但是str2ıs。!?&gt;&lt; < / em>的。我认为这是因为编码类型。我该如何解决这个问题?调用者exe是c#application。

2 个答案:

答案 0 :(得分:2)

使用QCoreApplication::arguments例如

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    if (argc > 1)
    {
        QString str1 = "çşüğ";
        QString str2 = a.arguments().at(1);
    }
    return a.exec();
}

请注意,在Windows环境中Unicode指的是UTF-16标准,您需要宽字符串,例如const wchar_t *charArray = L"çşüğ";而在基于Unix的环境中,Unicode指的是UTF-8。

Qt应该是跨平台兼容的,因此它会尝试通过QString和其他功能隐藏这些差异。

答案 1 :(得分:0)

将第一行更改为:

int wmain(int argc, wchar_t *argv[])

然后拨打GetCommandLineW