我是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
相同。但是如果我控制str1
和str2
值str1
正在寻找çşüğ但是str2
ıs。!?&gt;&lt; < / em>的。我认为这是因为编码类型。我该如何解决这个问题?调用者exe是c#application。
答案 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)