Добрый день!
Генерируем QR код на основе строки в которой используются кириллические символы и кавычки.
При последующем распознавании этого QR кода, если использовать в начале строки ST00012(Признак набора кодированных знаков UTF82), кавычки распознаются нормально, но кириллица распознается символами '?' сбербанком, Тинькофф не открывает вообще.
Если использовать в начале строки ST00011 (Признак набора кодированных знаков WIN12511), кириллица распознается корректно обоими банками, но в сбербанке в двух из трех полей кавычки заменяются символами '?' .
Видела на форуме, что может помочь настройка BarcodeQRCodeAllowUnicodeBOM = false, но в версии 2013 года она отсутствует.
Подскажите, пожалуйста, как применить данную настройку в версии 2013 или что делать, если отображение кириллицы и кавычек не читается некоторыми банками?
Пример отчёта высылаю.
*Вот что интересно, в онлайн-редакторе https://designer.stimulsoft.com/ у меня вчера были те же проблемы. Если в нем используется последняя версия, можно ли как-то там настроить опцию BarcodeQRCodeAllowUnicodeBOM?
Спасибо.
qr-код и кириллица, символы
-
- Сообщения: 1
- Зарегистрирован: 09 сен 2022, 14:14
qr-код и кириллица, символы
- Вложения
-
- QrCode.mrt
- (5.29 КБ) 212 скачиваний
-
- Сообщения: 78
- Зарегистрирован: 07 сен 2021, 13:18
Re: qr-код и кириллица, символы
Здравствуйте.
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. если в вашей версии нет этих свойств - значит придётся обновиться до более новой версии.
Спасибо.
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. если в вашей версии нет этих свойств - значит придётся обновиться до более новой версии.
Спасибо.
Re: qr-код и кириллица, символы
Использую релиз 2012.3 в одном из старых проектов.
Столкнулся с похожей проблемой. Т.к. свойства StiOptions.Engine.BarcodeQRCodeDefaultByteModeEncoding в моем реилзе еще нет для себя нашел решение добавив символ из кодировки UTF-8, в моем случае это символ валюты
Столкнулся с похожей проблемой. Т.к. свойства StiOptions.Engine.BarcodeQRCodeDefaultByteModeEncoding в моем реилзе еще нет для себя нашел решение добавив символ из кодировки UTF-8, в моем случае это символ валюты
Re: qr-код и кириллица, символы
Здравствуйте,
Спасибо за информацию.
Спасибо за информацию.