Android 摩托罗拉MC40没有';无法识别DataMatrix代码处的西里尔字母符号

Android 摩托罗拉MC40没有';无法识别DataMatrix代码处的西里尔字母符号,android,barcode,motorola,cyrillic,Android,Barcode,Motorola,Cyrillic,我在android上使用摩托罗拉MC40和EMDK。当我用大写字母“o”(U041E)之类的西里尔字母符号扫描数据矩阵代码时,函数scanda.getData()返回的字符串中包含字符“�" (代码65533) 当我使用软件工具I-nigma sdk时,它返回1251代码页中的字符字符串,我可以识别它 有人能帮我用EMDK读取我的DataMatrix条形码吗 图片: 编码字符串:#1@#С@#0700022520 i-nigma十六进制字节解码序列: [23 31 40 23 ce d1 40

我在android上使用摩托罗拉MC40和EMDK。当我用大写字母“o”(U041E)之类的西里尔字母符号扫描数据矩阵代码时,函数scanda.getData()返回的字符串中包含字符“�" (代码65533)

当我使用软件工具I-nigma sdk时,它返回1251代码页中的字符字符串,我可以识别它

有人能帮我用EMDK读取我的DataMatrix条形码吗

图片:

编码字符串:#1@#С@#0700022520

i-nigma十六进制字节解码序列: [23 31 40 23 ce d1 40 23 30 37 30 32 35 32 30]

mc40解码字符串:#1@#��@#0700022520

EMDK版本:3.1 操作系统版本:4.1.1


据我所知,在转换为字符串之前,我需要获取读取字节的序列,或者为转换器设置源数据的代码页。

在基于Android KitKat的较新Zebra Technologies设备上,扫描框架允许指定字符集

在DataWedge配置文件中,您可以在
读卡器参数中指定要使用的参数:

  • UTF-8
    (默认)
  • Shift-JIS
  • ISO-8859-1

此选项目前在MC40上不可用。

2016年1月发布的Zebra EMDK v4.0在条形码API中引入了一种新方法来扫描原始数据:

例如,您可以在


在这种情况下,
getRawData
返回一个
byte[]
包含条形码的原始数据。

你能提供条形码的图像吗?你使用的是哪个版本的EMDK,MC40上使用的是哪个操作系统版本?我添加了一个图像和软件版本。看到你报告的问题,我试图了解是否有任何解决方法。这太奇怪了。为什么不直接访问sca的原始字节nned数据?原始数据访问目前正在进行测试。您计划何时发布更新?我可以参加测试吗?
@Override public void onData(ScanDataCollection scanDataCollection) {

if ((scanDataCollection != null) &&
    (scanDataCollection.getResult() == ScannerResults.SUCCESS)) {

  ArrayList <ScanData> scanData = scanDataCollection.getScanData();
  for(ScanData data : scanData) {
      //Barcode label type
      String dataString = "Label Type: " + data.getLabelType() + "\n" ;
      //Barcode data as encoded String
      dataString += "Encoded Data Size: " + data.getData().length() +
                    " String: " + data.getData() + "\n";
      //Barcode data as Raw Data
      dataString += "Raw Data Size: " + data.getRawData().length + 
                    " (Hex): " + bytesToHexString(data.getRawData());

      new AsyncDataUpdate().execute(dataString);
    }
  } 
}
    public static String bytesToHexString(byte[] bytes){ 

    StringBuilder sb = new StringBuilder(); 
    for(byte b : bytes){
        sb.append(String.format("%02x ", b&0xff));
        }
    return sb.toString();   
}