Моя цель - получить код из двумерного штрих-кода, считываемого с помощью ручного сканера, и расшифровать его.
Код соответствует GS1 128.
Структура кода может включать «разделитель групп» для разделения частей кода.
Мне нужно прочитать этот разделитель групп, чтобы идентифицировать часть кода.
Моя проблема:
«Разделитель групп» - это символ Unicode «GS», шестнадцатеричный: 001D, десятичный: 29.
Это непечатный / пробельный символ.
Я не могу прочитать его непосредственно из приложения Scan in java (я хочу иметь его в JtextField). GS удаляется каждый раз.
Я не могу прочитать его с помощью классов InputStream, используя System.in
GS удаляется каждый раз.
НО:
Если я читаю код в notepad ++: GS не удаляется.
Если я скопирую код из notepad ++ в приложение Java: он работает, GS не удаляется.
Если я читаю код с консоли Windows (cmd.exe). Это работает также.
Я не вижу, где моя проблема. Я полагаю, это исходит от System.in.
Я видел, что это может быть сделано в C ++ с использованием std::noskipws
формата флага.
Я приведу вам пример кода для лучшего понимания:
Из Блокнота ++
01211154455215**GS**102254122**GS**125545
![img](https://i.stack.imgur.com/6RwIC.png)
Из консоли Windows:
01211154455215^]102254122^]125545
![img2](https://i.stack.imgur.com/PyHJL.png)
Спасибо за вашу помощь
Пример кода, который я пробовал:
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 ++