0

オープンソース プロジェクト zxing に基づく 2 次元コード プロジェクトを変更していますが、漢字を入力すると、他の 2 次元コード ソフトウェアから得られる結果が常に "] Q2 \ 000026" プレフィックスであることがわかりました。 . 私はそれが何を意味するのか理解できません。zxing-2.1 バージョンを使用。これがプロジェクトのリンクhttp://code.google.com/p/zxing/です。

私のプロジェクトコードは次のとおりです。

    @Override
public void run() {
    // TODO Auto-generated method stub
                 try {
            mTextContent = chinese test 中文测试";
            Bitmap bitmap = Create2DCode(mTextContent);
            return;
        } catch (WriterException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
}

public Bitmap Create2DCode(String str) throws WriterException {
    Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();
    hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.Q);
    hints.put(EncodeHintType.CHARACTER_SET, "GBK");//UTF-8
    // hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");//It's the same result.
    BitMatrix matrix = new MultiFormatWriter().encode(str,BarcodeFormat.QR_CODE, 500, 500, hints);
    int width = matrix.getWidth();
    int height = matrix.getHeight();
    int[] pixels = new int[width * height];
    for (int i = 0; i < pixels.length; i++) {
        pixels[i] = 0xffffffff;
    }
    for (int y = 0; y < height; y++) {
        for (int x = 0; x < width; x++) {
            if (matrix.get(x, y)) {
                pixels[y * width + x] = 0xff000000;
            }
        }
    }
    Bitmap bitmap = Bitmap.createBitmap(width, height,
            Bitmap.Config.ARGB_8888);
    bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
    return bitmap;
}

誰か助けてくれませんか?

4

1 に答える 1

0

お使いのQRソフトが対応していない可能性があります。私は zxing lib を使用したことがあり、以下のようにコードを書いたからです。中国語は「wochacha」というアプリで認識できますが、「wechat」では認識できません

マップのヒント = new HashMap(); ヒント.put(EncodeHintType.CHARACTER_SET, "UTF8"); BitMatrix マトリックス = new MultiFormatWriter().encode(str,BarcodeFormat.QR_CODE, 400, 400, ヒント);

于 2013-07-09T03:11:13.093 に答える