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('ж') // 166 ではなく -90 を返す

4

1 に答える 1

1

質問の仕方が悪いです。QChar は UTF-16 コード単位です (サロゲート ペアの一部になることもできます)。あなたのベストショットは

  1. サロゲート ペアの一部ではないことを確認します( QChar::isSurrogate)
  2. その文字のみで構成される QString を作成し、QTextCodec を使用して CP866 で文字列をエンコードします。次に、その最初のバイトを抽出します。

コードポイントが CP866 でエンコードできない場合に得られるものは未指定であることに注意してください。

于 2013-11-06T11:35:40.880 に答える