2016-07-15 14 views
1

Weiß jemand, ob es eine Möglichkeit gibt, die rohen Binärdaten eines QR-Codes mit der Android-API zu erhalten? Die QR-Codes, die ich lese, haben Binärdaten (einschließlich NUL-Zeichen) in ihnen, sind aber mit 8-Bit-Codierung gebaut, so dass der volle binäre Datenblock da ist. Das Barcode-Objekt, das sehr hilfreich zurückgegeben wird, hat die Zeichenfolge "Unbekannte Codierung" im Feld "RawValue" statt meiner Binärdaten? Danke für jede Idee!QR-Codes - rohe Binärdaten

+0

Haben Sie es geschafft, dies zu lösen, ohne Ihre QR-Codes zu ändern? Ich habe das gleiche Problem, aber ich kann Codes nicht ändern, wie Sie ... – vojta

+0

Nein, glücklicherweise für mich konnte ich die Software ändern, die die Codes auch erzeugte. Das hat es so funktionieren lassen, wie ich es erwartet hatte. –

Antwort

1

Um meine eigene Frage zu beantworten, scheint es, dass sowohl die Android Vision als auch die zxing Bibliotheken die Bytes in utf8 konvertieren, wenn die Kodierung nicht im QR Code angegeben ist (oder links im Standard). Ich dachte, dass die Standardcodierung ISO8859-1 war, aber die Bibliotheken gehen nicht davon aus. Der QR-Code wurde mit libqrencode in Linux generiert. Wenn der EKI-Header beim Generieren im QR-Code auf 1 gesetzt wird, behalten die Android-Bibliotheken die Binärdaten bei. So liest das Lesen der Byte-Array mit barcodes.valueAt(0).displayValue.getBytes("iso-8859-1"); die exakt codierten Bytes zurück.

+0

Ich benutze den gleichen QR-Code-Generator wie Sie, libqrencode, und ich habe das gleiche Problem, aber ich verstehe nicht. Wo ändern Sie den ECI-Header auf 1? – sh5164