Проблема с русскими буквами в штрих-коде типа DataMatrix

Обсуждение Stimulsoft Reports.NET
Ответить
Ant
Сообщения: 21
Зарегистрирован: 22 май 2013, 12:11

Проблема с русскими буквами в штрих-коде типа DataMatrix

Сообщение Ant »

Здравствуйте.
Возникла проблема с русскими буквами в штрих-коде типа DataMatrix.
В компонент вставляю текст:
1234567890123|Произвольный текст на русском языке
При сканировании разными сканерами получаю одинаковый ответ:
1234567890123|???????????? ????? ?? ??????? ?????
Пробовал разные типы кодировок - русские буквы отсутствуют.
С уважением
Вложения
ReportDataMatrix.mrt
Пример
(3.37 КБ) 455 скачиваний
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Проблема с русскими буквами в штрих-коде типа DataMatrix

Сообщение HighAley »

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

Вы вводите недопустимые символы. Более подробно об этом можеет почитать в нашей документации http://www.stimulsoft.com/ru/documentat ... DataMatrix

Прямая работа с 8-битными кодировками в .Net не всегда удобна. Поэтому мы использовали следующий метод для передачи данных в штрихкод:
на вход штрихкода принимается string, уникодный, который может содержать любые подготовленные данные.
Внутри штрихкода стринг преобразуется в массив байтов, каждый символ преобразуется командой (byte)st[index].
Соответственно получаются следующие варианты:
- латиница: передавать стринг как есть.
- байты: преобразовать в стринг, каждый байт преобразовать командой (char)byteArray[index].
- национальные символы: преобразовать в нужную 8-битную кодовую страницу, затем как с массивом байтов.

Пример функции для преобразования данных в нужную кодовую страницу (можно вставить в отчет на закладке Code в дизайнере):

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

  public string ToCodepage1251(string st)
  {
   byte[] bt = System.Text.Encoding.GetEncoding(1251).GetBytes(rain);
   System.Text.StringBuilder sb = new System.Text.StringBuilder();
   for (int index = 0; index < bt.Length; index++)
   {
    sb.Append((char)bt[index]);
   }
   return sb.ToString();
  }
Спасибо.
Ant
Сообщения: 21
Зарегистрирован: 22 май 2013, 12:11

Re: Проблема с русскими буквами в штрих-коде типа DataMatrix

Сообщение Ant »

Здравствуйте. Спасибо за ответ, но предложенный вариант по прежнему не работает.
Пробовал использовать оба варианта функции:

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

  public string ToCodepage1251(string st)
  {
   byte[] bt = System.Text.Encoding.GetEncoding(1251).GetBytes(st);
   System.Text.StringBuilder sb = new System.Text.StringBuilder();
   for (int index = 0; index < bt.Length; index++)
   {
    sb.Append((char)bt[index]);
   }
   return sb.ToString();
  }
  public string ToCodepageUTF8(string st)
  {
   byte[] bt = System.Text.Encoding.UTF8.GetBytes(st);
   System.Text.StringBuilder sb = new System.Text.StringBuilder();
   for (int index = 0; index < bt.Length; index++)
   {
    sb.Append((char)bt[index]);
   }
   return sb.ToString();
  }
Такое ощущение, что при построении символы от 128 до 255 заменяются знаками вопроса.
С QR Code всё работает хорошо, и при различных кодировках "кракозябрики" выдает разные.

Заранее спасибо
Ivan
Сообщения: 641
Зарегистрирован: 10 авг 2006, 05:40
Откуда: Stimulsoft Office

Re: Проблема с русскими буквами в штрих-коде типа DataMatrix

Сообщение Ivan »

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

Нашли в коде ошибку, исправили.
Патч будет включен в сегодняшний билд.

Спасибо.
Ant
Сообщения: 21
Зарегистрирован: 22 май 2013, 12:11

Re: Проблема с русскими буквами в штрих-коде типа DataMatrix

Сообщение Ant »

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

Re: Проблема с русскими буквами в штрих-коде типа DataMatrix

Сообщение HighAley »

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

Пишите, если ещё возникнут вопросы.

Спасибо.
Ответить