如何将 QChar 转换为 cp866 表中的字符代码



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

这是我的代码:

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 是一个 UTF-16 代码单元(这也意味着它可以是代理项对的一部分)。你最好的镜头是

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

请注意,如果您的代码点在 CP866 中不可编码,则未指定您获得的内容。

相关内容

  • 没有找到相关文章

最新更新