Страница 1 из 1

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

Добавлено: 22 май 2013, 13:30
Ant
Здравствуйте.
Возникла проблема с русскими буквами в штрих-коде типа DataMatrix.
В компонент вставляю текст:
1234567890123|Произвольный текст на русском языке
При сканировании разными сканерами получаю одинаковый ответ:
1234567890123|???????????? ????? ?? ??????? ?????
Пробовал разные типы кодировок - русские буквы отсутствуют.
С уважением

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

Добавлено: 22 май 2013, 15:16
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();
  }
Спасибо.

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

Добавлено: 22 май 2013, 16:02
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 всё работает хорошо, и при различных кодировках "кракозябрики" выдает разные.

Заранее спасибо

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

Добавлено: 24 май 2013, 12:33
Ivan
Здравствуйте.

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

Спасибо.

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

Добавлено: 24 май 2013, 13:17
Ant
Спасибо!

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

Добавлено: 27 май 2013, 14:04
HighAley
Здравствйте.

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

Спасибо.