我正在使用C ++和QT,并且德语变音符号有问题。我有一个像“wirsindmüde”的QString,并希望将其更改为“wir sind m& uuml; de”,以便在QTextBrowser中正确显示它。
我试着这样做:
s = s.replace( QChar('ü'), QString("ü"));
但它不起作用。
另外
s = s.replace( QChar('\u00fc'), QString("ü"))
不起作用。
当我循环遍历字符串中的所有字符时,'ü'是两个字符。
有人能帮助我吗?
答案 0 :(得分:7)
QStrings是UTF-16。
QString存储一串16位QChars,其中每个QChar对应一个Unicode 4.0字符。 (代码值高于65535的Unicode字符使用代理项对存储,即两个连续的QChars。)
所以试试
//if ü is utf-16, see your fileencoding to know this
s.replace("ü", "ü")
//if ü if you are inputting it from an editor in latin1 mode
s.replace(QString::fromLatin1("ü"), "ü");
s.replace(QString::fromUtf8("ü"), "ü"); //there are a bunch of others, just make sure to select the correct one
答案 1 :(得分:1)
Unicode中有两种不同的ü
表示形式:
00FC
(LATIN SMALL LETTER U WITH DIAERESIS)0075
(LATIN SMALL LETTER U)0308
(结合DIAERESIS)你应该检查两者。