0

如何在此表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

4

1 回答 1

1

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

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

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

于 2013-11-06T11:35:40.880 回答