Как читать / получать непечатный символ с ручного сканера

Моя цель - получить код из двумерного штрих-кода, считанного с помощью ручного сканера, и расшифровать его.

Код соответствует 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

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.

Он не работает с данными из Scan, но работает со строкой копирования / вставки из Notepad ++

0 ответов

Другие вопросы по тегам