Форум Кладовочки АЛьФ`а

Обсуждение проектов => FormEx => Тема начата: Hedron от 21 октября 2024, 11:39

Название: Русские буквы в QR-коде
Отправлено: Hedron от 21 октября 2024, 11:39
Здравствуйте!

Можно ли в QR-код закодировать русский текст?

Команда НарисоватьШтрихкод с input_mode по умолчанию (или input_mode=0 - DATA_MODE) выдаёт QR-код,, где русские буквы читаются как иероглифы.
При input_mode=1 (UNICODE_MODE) или input_mode=2 (GS1_MODE) – QR-код не выводится вообще!

Название: Re: Русские буквы в QR-коде
Отправлено: MWW_Ruza от 21 октября 2024, 23:24
"где русские буквы читаются как иероглифы" - читаются чем? Может проблема на стороне чтения? Сканер в режиме COM, или KB- ?
Поймать строку со сканера, и просмотреть коды символов...
Я точно кодировал ШК QR c помощью Formex, когда делал карточки для клиентов для ввода телефона/мыла, там точно были русские символы, как-то проблемм не было...
Название: Re: Русские буквы в QR-коде
Отправлено: MWW_Ruza от 21 октября 2024, 23:40
Вот, скриншот:
(https://content.foto.my.mail.ru/mail/m_w_w/_mypagephoto/h-586.jpg)
Как-то не было проблем, что напечатал, то и прочиталось...
Сканер Datalogic 2430, в режиме эмуляции com-порта.
Название: Re: Русские буквы в QR-коде
Отправлено: MWW_Ruza от 21 октября 2024, 23:44
Если что - вот команда рисования ШК:

Функция ВыводКартинкиШК(Объект)
   Если ВидКД = 1 Тогда
      Сервис.НарисоватьШтрихкод(Объект, 58, СокрЛП(Почта), 1,,0);   
   Иначе   
      Сервис.НарисоватьШтрихкод(Объект, 71, СокрЛП(Почта), 1,,0);
   КонецЕсли;   
КонецФункции
Название: Re: Русские буквы в QR-коде
Отправлено: Hedron от 22 октября 2024, 01:38
Сканировал смартфоном (как наиболее подручный аппарат для теста).
Скорее всего, дело именно в его "программе распознавания", поскольку, если в "слове" чётное количество букв, то выдаёт иероглифы, а если нечётное – выдаёт "умляуты" (что, в принципе, можно считать "русскими буквами в европейской кодировке").
Такие же "умляуты" он выдаёт и при сканировании вашего QR-кода.
Так что, можно считать, что виноват сам сканер  :-)

Но, в любом случае, в команде НарисоватьШтрихкод при использовании input_mode=1 (UNICODE_MODE), если в строке кодирования используются русские буквы, то QR-код не выводится вообще.
Название: Re: Русские буквы в QR-коде
Отправлено: Hedron от 22 октября 2024, 02:19
Так, с input_mode=1 (UNICODE_MODE), похоже, тоже разобрался: в этом режиме текст для QR-кода уже изначально должен быть в формате UTF-8 – тогда QR-код формируется.

Тогда вопросов больше нет!  :-)
Название: Re: Русские буквы в QR-коде
Отправлено: MWW_Ruza от 22 октября 2024, 08:56
Ну, и отлично.  :)

А это: "НарисоватьШтрихкод при использовании input_mode=1 (UNICODE_MODE), если в строке кодирования используются русские буквы, то QR-код не выводится вообще."
Действительно так, проверил. ШтрихКод не выводится, но и ошибки нет. Используемая ранее, до того как формекс научился рисовать ШтрихКоды библиотека ОквитаБаркоде, на основе той-же zint, вышибала 1С в такой ситуации напрочь, в критическую ошибку с закрытием программы, формекс более лоялен - просто не выводит :)
Название: Re: Русские буквы в QR-коде
Отправлено: MWW_Ruza от 22 октября 2024, 09:35
Попробовал сейчас ради интереса свой ШК с экрана:

"Сканировал смартфоном (как наиболее подручный аппарат для теста).
Скорее всего, дело именно в его "программе распознавания", поскольку, если в "слове" чётное количество букв, то выдаёт иероглифы, а если нечётное – выдаёт "умляуты" (что, в принципе, можно считать "русскими буквами в европейской кодировке")."

Андроид, какой-то из Ксиоми РедМи, приложение QR-сканер, распознает корректно, вывел строку по руски.

А вообще, если нужно, что-бы всегда читалось - можно тем-же формексом перекодировать строку в utf-8 и печатать с параметром 1. Должно будет везде работать.
Название: Re: Русские буквы в QR-коде
Отправлено: MWW_Ruza от 22 октября 2024, 09:54
Попробуйте вот этот считать смартфоном:

(https://content.foto.my.mail.ru/mail/m_w_w/_mypagephoto/h-587.jpg)

У меня читается так-же, как и без юникодов:

(https://content.foto.my.mail.ru/mail/m_w_w/_mypagephoto/h-588.jpg)

Вывожу так:

Функция ВыводКартинкиШК(Объект)
   Если ВидКД = 1 Тогда
      СтрУТФ8   = Сервис.DecodeToUTF8(СокрЛП(Почта));
      Сервис.НарисоватьШтрихкод(Объект, 58, СтрУТФ8, 1,,1);   
   Иначе   
      Сервис.НарисоватьШтрихкод(Объект, 71, СокрЛП(Почта), 1,,0);
   КонецЕсли;   
КонецФункции

Название: Re: Русские буквы в QR-коде
Отправлено: Hedron от 22 октября 2024, 20:19
Читает как: 6 знаков вопроса, пробел, 3 иероглифа, восклицательный знак.
Нет, я уже понял, что дело в самом сканере.
Название: Re: Русские буквы в QR-коде
Отправлено: MWW_Ruza от 22 октября 2024, 22:58
Скорее, даже не сам "сканер", а приложение на смартфоне, которым сканитуете.
Название: Re: Русские буквы в QR-коде
Отправлено: Злоп от 23 октября 2024, 11:28
Цитата: Hedron от 22 октября 2024, 20:19Читает как: 6 знаков вопроса, пробел, 3 иероглифа, восклицательный знак.
Нет, я уже понял, что дело в самом сканере.
может быть чувствительностью в настройках поиграться...
Название: Re: Русские буквы в QR-коде
Отправлено: Hedron от 23 октября 2024, 13:35
Цитата: Злоп от 23 октября 2024, 11:28может быть чувствительностью в настройках поиграться...
Нет, само приложение менять надо.
Но это неважно, поскольку всё равно сканировать будем не смартфоном, а мини-ТСД.
Название: Re: Русские буквы в QR-коде
Отправлено: Харлампий Дымба от 23 октября 2024, 18:22
Цитата: MWW_Ruza от 22 октября 2024, 09:54Вывожу так:
О! Спасибо!
А то я как-то пыкнулся qr вывести, он пустой и пустой. Оставил. А теперь попробовал - всё отлично. Русские буквы нормально выводятся, символ "№" тоже читается.

ТипКода=58;//58 - QRCODE
ЗначениеКода=Сервис.DecodeToUTF8(ТекстВывода);//в УТФ-8
ПрятатьТест=1;//не печатать на штрих-коде читаемый текст?
Input_Mode=0;//0 - DATA_MODE
Сервис.НарисоватьШтрихкод(Объект, ТипКода, ЗначениеКода, ПрятатьТест,,Input_Mode);
 

Сваял qr-код на оплату для одного заказчика - хочу ИПшникам на накладной печатать. Сбербанк-Онлайн считывает, создает запрос на оплату, все хорошо.
Только мне непонятен правовой статус всех этих дел.
Код, который я сделал по ГОСТ Р 56042-2014 (на ST который начинается, в платежках на коммуналку он, например) - никакого отношения к СБП и прочим НСПК не имеет, правильно? Это просто для упрощения считывания платежных реквизитов через банк-онлайн, чтобы ИПшнику не надо было платежку ваять руками в банковской программе, а создать эту платежку сканированием моего qr-кода с накладной?
Ну и для нас (продавца) ничего не поменяется - наш банк будет это видеть как обычное поступление по реквизитам?


 

Название: Re: Русские буквы в QR-коде
Отправлено: MWW_Ruza от 23 октября 2024, 22:38
А почему у Вас последним параметром 0 идет, если Вы преобразовали строку в ЮниКоде - ?
Смысл в этом? С 1 не работает?

А правовой статус? Да ни какого... Это просто Ваши внутренние "пироги" для удобства, не более того.
Название: Re: Русские буквы в QR-коде
Отправлено: Харлампий Дымба от 24 октября 2024, 10:22
Цитата: MWW_Ruza от 23 октября 2024, 22:38А почему у Вас последним параметром 0 идет, если Вы преобразовали строку в ЮниКоде - ?
Смысл в этом? С 1 не работает?
Да, не работает. В том то и была изначально у меня проблема - выводило просто пустое белое поле, я и не стал разбираться. А вторая проблема - текст как оказалось должен быть в UTF-8, в противном случае просто считывания не происходит и всё.

Обсуждение: https://1cpp.ru/forum/YaBB.pl?num=1427365326

Формекс 2.0.5.198, вывожу ТипКода=58;// - QRCODE, считываю телефоном через Kaspersky QR Scanner

Пробежался циклом по Input_Mode=0 по 4:
Код считываемый: 0 - DATA_MODE, 3 - KANJI_MODE, 4 - SJIS_MODE
Кода нет: 1 - UNICODE_MODE, 2 - GS1_MODE

Код считываемый: Сервис.DecodeToUTF8(ТекстВывода); // UTF-8
Код несчитываемый: СокрЛП(ТекстВывода);

ПрятатьТест - никак не изменяла вывод QR кода - может для каких-то других кодов нужна?
eci - не указывал (eci=22 не меняло вывод).


Название: Re: Русские буквы в QR-коде
Отправлено: Hedron от 24 октября 2024, 18:40
Цитата: Харлампий Дымба от 23 октября 2024, 18:22ПрятатьТест=1;//не печатать на штрих-коде читаемый текст?
Здесь всё наоборот: 0 – НЕ ПЕЧАТАТЬ текст штрих-кода, 1 - печатать.
Думаю, лучше поставить 0 (прятать текст) поскольку сбой при выводе QR-кода, возможно, могут вызвать некорректные символы при выводе обычного читаемого текста (особенно в UTF-8).
Название: Re: Русские буквы в QR-коде
Отправлено: Харлампий Дымба от 24 октября 2024, 18:54
Цитата: Hedron от 24 октября 2024, 18:40Здесь всё наоборот: 0 – не печатать текст штрих-кода, 1 - печатать.
Так в том-то и дело, что, независимо от значения этого реквизита, никакого текста с QR-кодом у меня не печатается. Может она работает только для каких-то особых <ТипКода>?
Название: Re: Русские буквы в QR-коде
Отправлено: Hedron от 24 октября 2024, 19:36
Цитата: Харлампий Дымба от 24 октября 2024, 18:54Может она работает только для каких-то особых <ТипКода>?
Думаю, эта опция будет работать для штрих-кодов (типа EAN-13). Навскидку: срабатывает, когда ТипКода: 9, 20, 60.

Тогда тем более, для вывода QR-кодов ПрятатьТест лучше ставить 0.
Название: Re: Русские буквы в QR-коде
Отправлено: Злоп от 25 октября 2024, 00:41
Ну как-бы куер можно запихнуть достаточно много инфы (вроде как до 2К) - вы как планируете столько инфы печатать такой "текст штрихкода"...?
Название: Re: Русские буквы в QR-коде
Отправлено: Злоп от 25 октября 2024, 00:44
Предпочтительным является написание "штрихкод", без дефиса.