我正在構建一個應用程序,通過tcp接收帶有編碼unicode的運行時字符串,示例字符串爲「\ u7cfb \ u8eca \ u4e21 \ uff1a \ u6771 \ u5317 ...」。我有以下內容,但不幸的是,我只能在編譯時受益於:不完整的通用字符名稱\ u,因爲它在編譯時期待4個十六進制字符。恢復運行時unicode字符串
QString restoreUnicode(QString strText)
{
QRegExp rx("\\\\u([0-9a-z]){4}");
return strText.replace(rx, QString::fromUtf8("\u\\1"));
}
我正在尋找在運行時的解決方案,我可以預見我打破了這些字符串後做一些操作,以十六進制的轉換「\ U」分隔符成基10,然後將它們傳遞到的構造一個QChar,但我正在尋找更好的方法,因爲我非常關心這種方法所帶來的時間複雜性,而不是專家。
有沒有人有任何解決方案或提示。
是不是'fromUtf8(「\\ u \\ 1」)'wor K +你的想法和這種嘗試有同樣的問題:'const char razy [] =「lass」;瘋狂的Foo {int a; bool b; };' –
爲什麼不使用'QDataStream'來編碼/解碼通過套接字的數據? –
我沒有對服務器的控制權,只是與第三方數據流一起工作,因爲它是ascii和小型場合嵌入式unicode的混合體。我已經提出了一個很好的解決方案,當您的問題計時器的答案在本網站上到期時,將在6個小時內發佈。 – Will