LINUX.ORG.RU

[C++]utf16 -> string

 


0

1

Господа! С устройство приходит строка вида 042D0442043E0442002004300431043E043D0435043D044200200441043D,
где 042D, 0442, ... - это код символа в шестнадцатеричном виде из UTF-16.

Есть что нибудь готовое, что б конвертировать это в строку символов?
Желательно на C++/Qt

Спасибо.


QString in = "042D0442043E0442002004300431043E043D0435043D044200200441043D";
QString out;
for (int i = 0; i < in.length(); i += 4)
    out += QChar(in.mid(i, 4).toUShort(0, 16));

примерно так.

arsi ★★★★★
()

utf-8/16 парсер пишется за полчаса в 20 строк кода. открой википедию и прочитай про utf-16, сразу станет ясно как распарсить

Reset ★★★★★
()
Ответ на: комментарий от x3al

> Суррогатные пары уже не нужны?

а они никуда и не денутся ;) QChar в Qt — 16-битный, и суррогатные пары в стрингах представляют собой пару QChar-ов. всё как жабе, всё по ынтерпрайзу ;)

arsi ★★★★★
()

QString QString::fromUtf16 ( const ushort * unicode, int size = -1 )

Kristi
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.