對於你的問題#2 - 如何的QString轉換爲UTF-16的QByteArray,沒有與QTextCodec來:: fromUnicode()的解決方案,如下面的代碼示例:
#include <QCoreApplication>
#include <QTextCodec>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// QString to QByteArray
// =====================
QString qstr_test = "test"; // from QString
qDebug().noquote().nospace() << "qstr_test[" << qstr_test << "]"; // Should see: qstr_test[test]
QTextCodec * pTextCodec = QTextCodec::codecForName("UTF-16");
QByteArray qba_test = pTextCodec->fromUnicode(qstr_test); // to UTF-16 QByteArray
qDebug() << "qba_test[";
int test_size = qba_test.size();
for(int i = 0; i < test_size; ++i) { // Should see each UTF-16 encoded character per line like this: ÿþt e s t
qDebug() << qba_test.at(i);
}
qDebug() << "]";
return a.exec();
}
的上面的代碼已經使用Qt 5.4進行了測試。
沒有8位或16位的Unicode字符。 Unicode是一個21位的代碼。你可能參考了UTF-8和UTF-16(它們使用8位或16位代碼*單元來表示Unicode代碼點)? – Joey
@Joey也許這就是這個規範的含義(你寫的),但這就是它說的方式(我寫的)。你說什麼是要求的,我會怎麼做呢? – ustulation
@ustulation兩種方式都比沒有回答問題要好。 –