有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从手持扫描仪读取/获取不可打印字符

我的目标是从手持扫描仪读取的二维条形码中获取代码,并对其进行解码

该代码符合GS1 128。 代码的结构可以包括“组分隔符”,用于分隔代码的各个部分

我需要阅读这个组分隔符来识别部分代码

我的问题是: “组分隔符”是unicode字符“GS”十六进制:001D,十进制:29

它是非打印/空白字符。 我无法直接从java应用程序中的扫描中读取它(我希望它位于JtextField中)。每次都会移除GS

我无法使用系统读取InputStream类。在里面 每次都会移除GS

但是:

如果我用记事本读代码++:GS不会被删除。 如果我将代码从notepad++复制到java应用程序:它可以工作,GS不会被删除

如果我使用windows控制台(cmd.exe)读取代码。它也起作用

我看不出我的问题在哪里。我想它来自于系统。在里面 我看到它可以在C++中使用^ {CD1}}格式标志。p>

我给您举一个代码示例,以便更好地理解: 从记事本++

01211154455215**GS**102254122**GS**125545

img

从windows控制台:

01211154455215^]102254122^]125545

img2

谢谢你的帮助

我尝试过的一个代码示例:

public class lireCode {
public static String lireCode() throws IOException {

    Scanner s = new Scanner(System.in);
    s.useDelimiter("");
    StringBuilder result =new StringBuilder(); 
    char c;

    do {
    c= s.next().charAt(0);
    if (c==29) {
        c = 41;
    }
    sortie.append(String.valueOf(c));
    }while (s.hasNext());
    s.close();

    return result.toString();
}
}

在这里,我尝试将“GS”替换为“)”,以使其在JtextField中易读

它不适用于扫描数据,但适用于记事本中的字符串复制/粘贴++


共 (0) 个答案