qr-код и кириллица, символы

Обсуждение Stimulsoft Reports.NET
Ответить
y.shapoval
Сообщения: 1
Зарегистрирован: 09 сен 2022, 14:14

qr-код и кириллица, символы

Сообщение y.shapoval »

Добрый день!
Генерируем QR код на основе строки в которой используются кириллические символы и кавычки.
При последующем распознавании этого QR кода, если использовать в начале строки ST00012(Признак набора кодированных знаков UTF82), кавычки распознаются нормально, но кириллица распознается символами '?' сбербанком, Тинькофф не открывает вообще.
Если использовать в начале строки ST00011 (Признак набора кодированных знаков WIN12511), кириллица распознается корректно обоими банками, но в сбербанке в двух из трех полей кавычки заменяются символами '?' .
Видела на форуме, что может помочь настройка BarcodeQRCodeAllowUnicodeBOM = false, но в версии 2013 года она отсутствует.
Подскажите, пожалуйста, как применить данную настройку в версии 2013 или что делать, если отображение кириллицы и кавычек не читается некоторыми банками?
Пример отчёта высылаю.

*Вот что интересно, в онлайн-редакторе https://designer.stimulsoft.com/ у меня вчера были те же проблемы. Если в нем используется последняя версия, можно ли как-то там настроить опцию BarcodeQRCodeAllowUnicodeBOM?
Спасибо.
Вложения
QrCode.mrt
(5.29 КБ) 95 скачиваний
Max Shamanov
Сообщения: 61
Зарегистрирован: 07 сен 2021, 13:18

Re: qr-код и кириллица, символы

Сообщение Max Shamanov »

Здравствуйте.

QR-Code поддерживает разные режимы записи информации.
Обычно алгоритм выбора режима работает так.
Сначала анализируются входные данные и проверяется, могут ли они быть записаны в одном из простых режимов (Numeric, Alphanumeric, Kanji). Если не могут – используется режим Byte.
В режиме Byte входные данные кодируются с помощью одной их кодировок из списка ECI (Extended Channel Interpretation). Алгоритм по очереди проверяет каждую кодировку, можно ли с её помощью закодировать все символы входных данных. Если ни одна не подходит – используется кодировка «Utf-8».

Это всё делается для того, чтобы штрихкод получался как можно меньшего размера. Простые режимы – самые компактные, в режиме Utf-8 получается самый большой штрихкод.

Список кодировок, которые используются для QR-Code в нашем продукте (в порядке использования):
"Cp437"
"ISO-8859-1"
"ISO-8859-2"
"ISO-8859-3"
"ISO-8859-4"
"ISO-8859-5"
"ISO-8859-6"
"ISO-8859-7"
"ISO-8859-8"
"ISO-8859-9"
"ISO-8859-11"
"ISO-8859-13"
"ISO-8859-15"
"Shift_JIS"
"Windows-1250"
"Windows-1251"
"Windows-1252"
"Windows-1256"
"UTF-8".

Эти кодировки используются в стандарте ECI.

Но разные устройства для чтения штрихкодов могут поддерживать разные наборы кодировок.
Например, сканеры штрихкодов в некоторых странах поддерживают только определённые кодировки, наиболее употребляемые в этой стране.
Также, многие мобильные приложения для чтения штрихкодов поддерживают только определённые кодировки, а некоторые приложения вообще не понимают ECI.
К счастью, в последнее время большинство сканеров нормально понимают кодировку «Utf-8».

Некоторые кодировки в этом списке похожи. Например, ISO-8859-5 и Windows-1251 содержат символы кириллицы. Поэтому какая из этих кодировок будет использована для русского текста – зависит от входных данных.
Некоторые сканеры, например, из системы «Сбер», не хотят работать с кодировкой ISO-8859-5 и требуют использовать именно Windows-1251.

Для таких случаев в нашем продукте предусмотрено статическое свойство StiOptions.Engine.BarcodeQRCodeDefaultByteModeEncoding, в котором можно задать кодировку, с которой будет начинаться подбор. В случае «Сбер» можно задать например так:
StiOptions.Engine.BarcodeQRCodeDefaultByteModeEncoding = Stimulsoft.Report.BarCodes.StiQRCodeECIMode.Windows_1251;

Если входные данные кодируются в Utf-8, то в начале данных у нас добавляется метка BOM (Byte Order Mark), которая помогает некоторым приложениям правильно определять кодировку. Но некоторые сканеры не понимают BOM, и в начале текста появляются три лишних символа "". Чтобы их убрать, установите опцию
StiOptions.Engine.BarcodeQRCodeAllowUnicodeBOM = false;

P.S. если в вашей версии нет этих свойств - значит придётся обновиться до более новой версии.

Спасибо.
akter_k
Сообщения: 2
Зарегистрирован: 22 ноя 2022, 07:37

Re: qr-код и кириллица, символы

Сообщение akter_k »

Использую релиз 2012.3 в одном из старых проектов.
Столкнулся с похожей проблемой. Т.к. свойства StiOptions.Engine.BarcodeQRCodeDefaultByteModeEncoding в моем реилзе еще нет для себя нашел решение добавив символ из кодировки UTF-8, в моем случае это символ валюты
Aleksey
Сообщения: 2761
Зарегистрирован: 22 апр 2010, 06:57

Re: qr-код и кириллица, символы

Сообщение Aleksey »

Здравствуйте,

Спасибо за информацию.
Ответить