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
从windows控制台:
01211154455215^]102254122^]125545
谢谢你的帮助
我尝试过的一个代码示例:
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) 个答案