【发布时间】:2021-05-06 02:21:42
【问题描述】:
开发一个使用 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 可以胜任,但它在识别现实生活中遇到了更多困难,扫描并不那么完美。
任何想法,任何提示?
【问题讨论】:
-
也许它正在以文本模式处理?在文本模式下,它只能处理 ASCII 字符。 Data Matrix - Wikipedia 两种软件中是否有任何选项可以在编码和解码时显式指定 Base256 模式?也许如果您正在处理 ISO-8859-1 编码数据,您可能需要设置这些模式和选项以将字符串转换为字节数组。
-
您能分享您使用 ISO-8859-1 编码的 DataMatrix 条形码图像吗?我们会将案件转交我们的研究小组进行进一步调查。谢谢! -- 来自 ML Kit 团队
-
@JulieZhou 刚刚添加了一个带有 ISO-8859-1 编码的官方德国药物计划数据矩阵的示例。提前感谢您的帮助!
-
感谢 Dirk,将进一步查看示例条码。
-
谢谢你,朱莉!希望有一个解决方案 - 这是一个相当常见的用例。丑陋的是我们仍然必须处理非 unicode 编码,但别无选择。
标签: android kotlin barcode-scanner google-mlkit datamatrix