为什么这样的结果不一致?右边的编码是在调试器中显示的。我现在的问题是c1 != c2。
QChar c1 = 'ç'; //==> 50087
QString str = "ç";
QChar c2 = str.at(0); //==> 231
QChar c3 = QString(c1).at(0); //==> 50087发布于 2014-03-25 00:07:07
Qt可能误解了您的字符,因为它被处理为一个签名的简短,并将符号延伸应用于它,从而产生不正确的50087值。如果显式地将字符转换为一个无符号字符-- (uchar)'ç' --您应该得到一致的结果。
下面的代码应该适用于您:
QChar c1 = (uchar)'ç'; //==> 231
QString str = "ç";
QChar c2 = str.at(0); //==> 231
QChar c3 = QString(c1).at(0); //==> 231但是,由于您使用的字符集在扩展ASCII范围内,我建议您对源字符串和字符使用宽字符或UTF8编码,以避免在扩展的ASCII范围内可能出现的歧义。扩展的ASCII范围内的字符根据代码页进行解释,这可能导致“字符集混乱”。
https://stackoverflow.com/questions/22616057
复制相似问题