首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从QChar解析QString而不是直接分配

从QChar解析QString而不是直接分配
EN

Stack Overflow用户
提问于 2014-03-24 17:10:27
回答 1查看 76关注 0票数 0

为什么这样的结果不一致?右边的编码是在调试器中显示的。我现在的问题是c1 != c2。

代码语言:javascript
复制
QChar c1 = 'ç';                //==> 50087
QString str = "ç";
QChar c2 = str.at(0);          //==> 231
QChar c3 = QString(c1).at(0);  //==> 50087
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-25 00:07:07

Qt可能误解了您的字符,因为它被处理为一个签名的简短,并将符号延伸应用于它,从而产生不正确的50087值。如果显式地将字符转换为一个无符号字符-- (uchar)'ç' --您应该得到一致的结果。

下面的代码应该适用于您:

代码语言:javascript
复制
QChar c1 = (uchar)'ç';                //==> 231
QString str = "ç";
QChar c2 = str.at(0);          //==> 231
QChar c3 = QString(c1).at(0);  //==> 231

但是,由于您使用的字符集在扩展ASCII范围内,我建议您对源字符串和字符使用宽字符或UTF8编码,以避免在扩展的ASCII范围内可能出现的歧义。扩展的ASCII范围内的字符根据代码页进行解释,这可能导致“字符集混乱”

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22616057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档