【问题标题】:How convert QChar to char code in cp866 table?如何将 QChar 转换为 cp866 表中的字符代码?
【发布时间】:2013-11-06 11:05:34
【问题描述】:

如何获取此表http://www.ascii-codes.com/cp866.html中qchar的int码?

这是我的代码:

int getCp866Code(QChar c) {
    if (!c.isSurrogate()) {
        QString temp = c;
        QTextCodec* cp866 = QTextCodec::codecForName("IBM 866");
        QByteArray byteArray = cp866->fromUnicode(temp);
        return (int) byteArray[0];
    }
    return -1;
}

getCp866Code('ж') // 返回 -90,而不是 166

【问题讨论】:

  • 这有意义吗:QChar c('A'); int ci = c.unicode(); // ci == 65?
  • 例如:QChar c('ж') in unicode int 表示返回1078,而不是166

标签: qt ascii qt5 qchar cp866


【解决方案1】:

这个问题提出来了。 QChar 是一个 UTF-16 代码单元(这也意味着它可以是代理对的一部分)。你最好的镜头是

  1. 检查它不是代理对的一部分 (QChar::isSurrogate)
  2. 构建一个仅包含该字符的 QString,然后使用 QTextCodec 对 CP866 中的字符串进行编码。然后提取它的第一个字节。

请注意,如果您的代码点在 CP866 中不可编码,您会得到什么。

【讨论】:

  • 如果我尝试将西里尔字符转换为字符代码,我的函数(有问题的描述)返回负值:(
猜你喜欢
  • 1970-01-01
  • 2013-08-24
  • 2011-12-06
  • 1970-01-01
  • 2011-07-11
  • 2018-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多