如何获取此表中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 代码单元(这也意味着它可以是代理项对的一部分)。你最好的镜头是
- 检查它是否不是代理项对的一部分 (
QChar::isSurrogate
) - 构建仅包含该字符的 QString,然后使用 QTextCodec 在 CP866 中对字符串进行编码。然后提取它的第一个字节。
请注意,如果您的代码点在 CP866 中不可编码,则未指定您获得的内容。