For those wanting to reproduce:
// U+0627 U+0644 U+062C U+062F U+064A U+062F
QString temp
= QString::fromUtf8( "\xD8\xA7\xD9\x84\xD8\xAC\xD8\xAF\xD9\x8A\xD8\xAF : 12");
QString temp1
= QString::fromUtf8( "\xD8\xA7\xD9\x84\xD8\xAC\xD8\xAF\xD9\x8A\xD8\xAF : ABC");
qDebug() << temp;
qDebug() << temp1;
// U+0627 U+0644 U+062C U+062F U+064A U+062F
QString temp = QString::fromUtf8( "\xD8\xA7\xD9\x84\xD8\xAC\xD8\xAF\xD9\x8A\xD8\xAF : 12");
QString temp1 = QString::fromUtf8( "\xD8\xA7\xD9\x84\xD8\xAC\xD8\xAF\xD9\x8A\xD8\xAF : ABC");
qDebug() << temp;
qDebug() << temp1;
To copy to clipboard, switch view to plain text mode
Output in a terminal support bi-directional text:
"الجديد : 12"
"الجديد : ABC"
"الجديد : 12"
"الجديد : ABC"
To copy to clipboard, switch view to plain text mode
Both strings report isRightToLeft() == true.
Despite the characters in the string being in precisely the order of the UTF8 input, splitting on " : " gives QStringLists in opposite orders, which I think is the OP's problem:
"الجديد" " 12"
"الجديد" " ABC"
"الجديد" " 12"
"الجديد" " ABC"
To copy to clipboard, switch view to plain text mode
Interestingly the first string in each pair reports isRightToLeft() and the second does not.
This works but is limited to single character separators:
QByteArray raw1
( "\xD8\xA7\xD9\x84\xD8\xAC\xD8\xAF\xD9\x8A\xD8\xAF : 123");
QList<QByteArray> parts1 = raw1.split(':');
qDebug
() <<
QString::fromUtf8(part
);
QByteArray raw2
( "\xD8\xA7\xD9\x84\xD8\xAC\xD8\xAF\xD9\x8A\xD8\xAF : ABC");
QList<QByteArray> parts2 = raw2.split(':');
qDebug
() <<
QString::fromUtf8(part
);
QByteArray raw1( "\xD8\xA7\xD9\x84\xD8\xAC\xD8\xAF\xD9\x8A\xD8\xAF : 123");
QList<QByteArray> parts1 = raw1.split(':');
foreach (const QByteArray &part, parts1)
qDebug() << QString::fromUtf8(part);
QByteArray raw2( "\xD8\xA7\xD9\x84\xD8\xAC\xD8\xAF\xD9\x8A\xD8\xAF : ABC");
QList<QByteArray> parts2 = raw2.split(':');
foreach (const QByteArray &part, parts2)
qDebug() << QString::fromUtf8(part);
To copy to clipboard, switch view to plain text mode
I don't have enough RTL-foo to see a QString answer.
Bookmarks