简体   繁体   中英

How can I convert a decimal code of a character into a Unicode string in C++?

How can I convert a decimal code of a character into a Unicode string in C++? For example, I give it the integer 241, that is the 'ñ' spanish letter, and I want to convert it to a Unicode string.

If your source character set is ISO 8859-1 or 8859-15 (both of which have LATIN SMALL LETTER N WITH TILDE at code point 0xF1 = 241), then the conversion needs to create the correct encoding for Unicode character U+00F1.

Now, we need to know which Unicode encoding scheme you are using. If you use UTF-8, you will need the result:

 \xC3 \xB1

If you use UTF-16 BE (big endian), you need:

\x00 \xF1

If you use UTF-16 LE (little endian), you need:

\xF1 \x00

If you are using UTF-32, then you need 4 bytes instead of 2.

And if you want a string, you will need to encode the U+0000 (NULL) as a following character.

If you don't know which form you need, you have big problems; to use Unicode, you need to understand something of how the different forms are encoded. Your library may save you from a lot of the bother of understanding, but ultimately, you need to know at least a minimum about Unicode .

If the character code is determined at runtime, and you cannot use literals like explained by Jonathan , you need to rely on your toolkit. For example, in Qt:

QString codepointToString(QString codepointDecimal) {
    int codepoint = codepointDecimal.toInt(); //TODO: check errors
    QChar character(codepoint);
    return QString(character);
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM