Qt中使用中文也不算麻烦,只是到处都要用QTextCodec* toUnicode一下,好奇到底Qstring是怎么编码的,我对unicode标准也没兴趣了解,只是 dump 下,看下wchar_t怎么不能用。测试代码:
wchar_t* pWideString = L"我们的大中国";
QString str = pLocale->toUnicode("我们的大中国");
然后逐一比较,根据测试及相应的printf dump出来的结果,在Qt中QString保存的编码和wchar_t一致。嗯,这就好办了:
QString str;
const wchar_t* pWideString = L"我要显示乱码!";
str.resize(lstrlenW(pWideString));
memcpy(str.data(), pWideString, lstrlenW(pWideString) * sizeof(wchar_t));
这样至少在windows下不需要Qt逐步的转码,呵呵,一样的目的,不一样的手段。
QString MakeQString(const wchar_t* pUnicodeString)
{
QString tmpStr;
tmpStr.resize(lstrlenW(pUnicodeString));
memcpy(tmpStr.data(), pUnicodeString, lstrlenW(pUnicodeString) * sizeof(wchar_t));
return tmpStr;
}