使用 ISO-8859-1 编码解析 DataMatrix 时出现未知编码错误

问题描述

使用 Google 的 MLKit 开发一个用于扫描数据矩阵代码的 Android 应用程序,我无法使用以 ISO-8859-1 编码并包含非 ASCII 字符的数据解析代码

这是一个例子: DataMatrix failing with ML Kit

val options = BarcodeScannerOptions.Builder()
    .setBarcodeFormats(Barcode.FORMAT_DATA_MATRIX)
    .build()
val scanner = BarcodeScanning.getClient(options)
scanner.process(image).addOnSuccessListener { barcodes ->
  val barcode = barcodes.firstOrNull()
  Log.i(TAG,barcode?.rawValue)
  Log.i(TAG,String(barcode?.rawBytes!!,StandardCharsets.ISO_8859_1))
}

两个日志语句都返回一个表示“未知编码”的字符串(字面意思)。

我使用的是最新版本的 MLKit 条形码扫描库:

implementation 'com.google.mlkit:barcode-scanning:16.1.1

ZXing 可以完成这项工作,但它在识别现实生活中遇到了更多困难,不太完美的扫描。

任何想法,任何提示

解决方法

条码图片的问题是条码周围没有填充,会返回空结果。

在条码内容周围添加一些填充后,检测到条码。 barcode is detectedDetected result

,

使用最新版本的 ML Kit 条码扫描库 16.1.2,rawBytes 方法现在返回 QR 码的预期内容,也适用于非 unicode 编码。

implementation 'com.google.mlkit:barcode-scanning:16.1.2'