I am writing a QT5 application (with QT Creator) which uses special characters like zodiac signs. This code works perfectly fine on Linux Mint 14:
QString s = QString::fromUtf8(“\u2648”);
But when I compile it on Windows XP SP3 get a compiler warning which says that the current codepage is cp1252 and the character \u2648 cannot be converted. When I run the program this character is displayed as a question mark.
According to my system settings UTF8(codepage 65001) is installed on my Windows.
(Note, I have not tried this, and I don’t know which compiler you are using, and am completely unfamiliar with QT, so I could be wrong. The following is based on general knowledge about Unicode on Windows.)
On Windows, 8-bit strings are generally assumed to be in the current codepage of the system (also called the “ANSI” codepage). This is never UTF-8. On your system, it’s apparently cp1252. So there are actually two things going wrong:
On your Linux system, both works “by accident”, because it uses UTF-8 for 8-bit strings.
To get this right, specify the 8-bit string in UTF-8 right away: