如何在C ++中将字符的十进制代码转换为Unicode字符串?

时间:2010-01-30 20:22:36

标签: c++ string unicode decimal

如何在C ++中将字符的十进制代码转换为Unicode字符串? 例如,我给它整数241,即'ñ'西班牙语字母,我想将它转换为Unicode字符串。

2 个答案:

答案 0 :(得分:1)

如果源字符集是ISO 8859-1或8859-15(两者都在代码点0xF1 = 241处具有LATIN SMALL LETTER N WITH TILDE),则转换需要为Unicode字符U +创建正确的编码00F1。

现在,我们需要知道您正在使用哪种Unicode编码方案。如果您使用UTF-8,则需要结果:

 \xC3 \xB1

如果您使用UTF-16 BE(大端),则需要:

\x00 \xF1

如果您使用UTF-16 LE(小端),则需要:

\xF1 \x00

如果您使用的是UTF-32,则需要4个字节而不是2个字节。

如果你想要一个字符串,你需要将U + 0000(NULL)编码为下一个字符。

如果你不知道你需要哪种形式,你就会遇到大问题;要使用Unicode,您需要了解不同表单的编码方式。您的图书馆可能会让您免于理解,但最终,您需要至少知道minimum about Unicode

答案 1 :(得分:0)

如果在运行时确定字符代码,并且您不能使用explained by Jonathan之类的文字,则需要依赖您的工具包。例如,在Qt:

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