Страница 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
Здравствйте.
Пишите, если ещё возникнут вопросы.
Спасибо.