QString和德语变音符号

时间:2011-10-18 10:58:05

标签: c++ qt qstring

我正在使用C ++和QT,并且德语变音符号有问题。我有一个像“wirsindmüde”的QString,并希望将其更改为“wir sind m& uuml; de”,以便在QTextBrowser中正确显示它。

我试着这样做:

s = s.replace( QChar('ü'), QString("ü"));

但它不起作用。

另外

 s = s.replace( QChar('\u00fc'), QString("ü"))

不起作用。

当我循环遍历字符串中的所有字符时,'ü'是两个字符。

有人能帮助我吗?

2 个答案:

答案 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)

你应该检查两者。