我的目标是从使用手持式扫描仪读取的2D条形码中获取代码并对其进行解码。
该代码符合GS1 128。 该代码的结构可以包含“组分隔符”以分隔代码的各个部分。
我需要阅读此组分隔符以识别部分代码。
我的问题是: “组分隔符”是Unicode字符“ GS”,十六进制:001D,十进制:29。
这是一个非打印/空格字符。 我无法直接从Scan in Java应用程序中读取它(我想将其放在JtextField中)。每次都会删除GS。
使用System.in的InputStream类无法读取它 每次都会删除GS。
但是:
如果我使用notepad ++阅读代码:不会删除GS。 如果我将代码从notepad ++复制到Java应用程序:可以,则不会删除GS。
如果我使用Windows控制台(cmd.exe)读取代码。也可以。
我看不到我的问题在哪里。我想它来自System.in。
我看到可以使用std::noskipws
格式标志在C ++中完成。
我为您提供了一个代码示例,以帮助您更好地理解: 从记事本++
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中清晰可见。
它不适用于Scan中的数据,但适用于Notepad ++中的String复制/粘贴