Кодировка Win-1251 для QRCode

Обсуждение Stimulsoft Reports.NET
Ответить
r.grebenkin@srcc.su
Сообщения: 4
Зарегистрирован: 02 окт 2015, 12:40

Кодировка Win-1251 для QRCode

Сообщение r.grebenkin@srcc.su »

Есть ли возможность формировать QR-код для текста в кодировке Win-1251?
Пытался передавать массив байтов ByteList в отчёт, но не сработало.
В ваших исходниках нашёл следующий код:

Код: Выделить всё

                    AddCharacterSet(0, "Cp437", n);
                    AddCharacterSet(1, "ISO-8859-1", n);
                    AddCharacterSet(2, "Cp437", n);
                    AddCharacterSet(3, "ISO-8859-1", n);
                    AddCharacterSet(4, "ISO-8859-2", n);
                    AddCharacterSet(5, "ISO-8859-3", n);
                    AddCharacterSet(6, "ISO-8859-4", n);
                    AddCharacterSet(7, "ISO-8859-5", n);
                    AddCharacterSet(8, "ISO-8859-6", n);
                    AddCharacterSet(9, "ISO-8859-7", n);
                    AddCharacterSet(10, "ISO-8859-8", n);
                    AddCharacterSet(11, "ISO-8859-9", n);
                    //AddCharacterSet(12, "ISO-8859-10", n);
                    AddCharacterSet(13, "ISO-8859-11", n);
                    AddCharacterSet(15, "ISO-8859-13", n);
                    //AddCharacterSet(16, "ISO-8859-14", n);
                    AddCharacterSet(17, "ISO-8859-15", n);
                    //AddCharacterSet(18, "ISO-8859-16", n);
                    AddCharacterSet(20, "Shift_JIS", n);
                    //21 	Windows-1250
                    //22 	Windows-1251
                    //23 	Windows-1252
                    //24 	Windows-1256
                    //25 	UTF-16
                    AddCharacterSet(26, "UTF-8", n);
                    //27 	ISO-646-US
                    //28 	Big5
                    //29 	GB 2312
                    //30 	KSC-5601
Судя по закоментированной строке "22 Windows-1251" такая возможность отсутствует, но хотелось бы знать это наверняка, чтобы объяснить заказчику.

P.S. Пользуюсь версией Reports.Net 2014.1
Ivan
Сообщения: 641
Зарегистрирован: 10 авг 2006, 05:40
Откуда: Stimulsoft Office

Re: Кодировка Win-1251 для QRCode

Сообщение Ivan »

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

В процессе генерации штрихкода перебирается большое количество разных кодировок, чтобы определить, в какой из них входной текст может быть закодирован целиком.
Начинается с ISO-8859-1, затем 2, 3, 4 ... 15, Windows, Shift_JIS, и завершается UTF-8.
Т.е. если какой-нибудь из символов текста не встретился ни в одной кодировке, то используется UTF-8.
UTF-8 не используется по умолчанию потому, что в ней штрихкод получается большего размера, и не все декодеры нормально понимают эту кодировку.

Недавно мы сделали доработку и добавили новое статическое свойство, чтобы принудительно выбрать какую-нибудь кодировку.
Вам необходимо использовать следующую строку кода для изменения кодировки:

Код: Выделить всё

    StiOptions.Engine.BarcodeQRCodeDefaultByteModeEncoding = Stimulsoft.Report.BarCodes.StiQRCodeECIMode.Windows_1251;
Данное новое свойство доступно в релизе 2015.2.

Спасибо.
r.grebenkin@srcc.su
Сообщения: 4
Зарегистрирован: 02 окт 2015, 12:40

Re: Кодировка Win-1251 для QRCode

Сообщение r.grebenkin@srcc.su »

К сожалению, перейти на 2015.2 у меня не получиться, т.к. он требует .Net Framework 4.0 и выше. Сравнил исходники 2015.2 с 2014.1. В файле StiQRCodeBarCodeType.cs кодировка Windows-1251 для версии 2014.1 закоментирована, а в 2015.2 раскомментирована. Получается, что в 2014.1 эта кодировка не используется? Или я не то смотрю?
r.grebenkin@srcc.su
Сообщения: 4
Зарегистрирован: 02 окт 2015, 12:40

Re: Кодировка Win-1251 для QRCode

Сообщение r.grebenkin@srcc.su »

Я нашёл, в чём была проблема. Процедура определения кодировки возвращает кодировку ISO-8859-5, т.к. во-первых, она стоит почти в самом начале списка, а во-вторых - кодировка Windows-1251 вообще была закоментирована. Правда в 2015.2 версии она уже не закоментирована, но всё равно стоит позже по-списку, чем ISO-8859-5, т.ч. результат будет тот же самый. Хотелось бы узнать, имею ли я право поправить исходники 2014.1 у себя и собрать нужные библиотеки, т.к. переходить на более позднюю версию я не могу
Ivan
Сообщения: 641
Зарегистрирован: 10 авг 2006, 05:40
Откуда: Stimulsoft Office

Re: Кодировка Win-1251 для QRCode

Сообщение Ivan »

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

Кодировка Windows-1251 содержит все русские символы та же, как и кодировка ISO 8859-5, разница - в некоторых символах типографики.
Кодировка Windows-1251 в списке кодировок располагается ниже кодировки ISO 8859-5, это определяется спецификацией штрихкода.
Поэтому в большинстве случаев при простом русском тексте для алгоритма нет разницы, какую из этих кодировок использовать, и берётся первая из них - ISO 8859-5.
В связи с этим редко используемые кодировки были закомментированы.

Однако некоторое специализированное оборудование российского производства, как оказалось, поддерживает ограниченное количество кодировок, например только Windows-1251.
В связи с этим недавно была сделана доработка: включили все кодировки и добавили опцию для принудительного выбора определённой кодировки.

В вашем случае, если вы имеете исходники, достаточно раскомментировать строки с кодировками и переместить кодировки Windows перед кодировками ISO.

Спасибо.
r.grebenkin@srcc.su
Сообщения: 4
Зарегистрирован: 02 окт 2015, 12:40

Re: Кодировка Win-1251 для QRCode

Сообщение r.grebenkin@srcc.su »

Спасибо
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Кодировка Win-1251 для QRCode

Сообщение HighAley »

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

Мы всегда рады вам помочь.
Обращайтесь, если ещё нужна будет помощь.

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

Re: Кодировка Win-1251 для QRCode

Сообщение akter_k »

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

Re: Кодировка Win-1251 для QRCode

Сообщение Aleksey »

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

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