Как читать / получать непечатный символ с ручного сканера
Моя цель - получить код из двумерного штрих-кода, считанного с помощью ручного сканера, и расшифровать его.
Код соответствует GS1 128. Структура кода может включать в себя "разделитель групп" для разделения частей кода.
Мне нужно прочитать этот разделитель групп, чтобы идентифицировать часть кода.
Моя проблема: "Разделитель групп" - это символ Unicode "GS" hex: 001D, десятичный: 29.
Это непечатный / пробельный символ. Я не могу прочитать его непосредственно из приложения Scan in java (я хочу иметь его в JtextField). GS удаляется каждый раз.
Я не могу прочитать его с классами InputStream, используя System.in GS удаляется каждый раз.
НО:
Если я читаю код с Notepad++: GS не удаляется. Если я скопирую код из notepad++ в приложение Java: он работает, GS не удаляется.
Если я читаю код с консоли Windows (cmd.exe). Это работает также.
Я не вижу, где моя проблема. Я полагаю, это исходит от System.in. Я видел, что это может быть сделано в C++ с помощью std::noskipws
флаг формата.
Я даю вам пример кода для лучшего понимания: из Notepad ++
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 ++