у меня вроде как получилось. пришлось просто форкнуть zxing и впихнуть насильно кодировку. но проблема может быть в декодировании, если определенный ридер не сможет прочитать, то придется опять как то думать.
Причем все онлайн декодеры по разному понимают. кому то нужна рамка, кто то сразу читает, кто то не поддерживает utf-8, а где то и вообще не может найти матрицу.
а код простой, вот например так
BitMatrix bitMatrix = null;
try {
DataMatrixWriter writer = new DataMatrixWriter();
Map hints = new HashMap<>();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
hints.put(EncodeHintType.DATA_MATRIX_SHAPE, SymbolShapeHint.FORCE_SQUARE);
bitMatrix = writer.encode("привет мир", BarcodeFormat.DATA_MATRIX, 0, 0, hints);
} catch (UnsupportedEncodingException e) {
//empty
}
Спасибо за ответ, это не помогает. если посмотреть то падает все раньше. на создании EncoderContext. так как внутри он пытается сделать byte[] msgBinary = msg.getBytes(Charset.forName("ISO-8859-1")); а дальше кидает exception.
даже коммент оставили перед этим "From this point on Strings are not Unicode anymore!" =)
Но вопрос все равно упрется наверное в настройку маршрутизации. А если между двумя брокерами будет 10 очередей практически одинаковые по имени (н-р, q1.rus.mos.sale, q1.rus.mos.buy, ... ). Все таки думаю надо смотреть в сторону фильтров.
Но спасибо за ответы))
Причем все онлайн декодеры по разному понимают. кому то нужна рамка, кто то сразу читает, кто то не поддерживает utf-8, а где то и вообще не может найти матрицу.
а код простой, вот например так
BitMatrix bitMatrix = null;
try {
DataMatrixWriter writer = new DataMatrixWriter();
Map hints = new HashMap<>();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
hints.put(EncodeHintType.DATA_MATRIX_SHAPE, SymbolShapeHint.FORCE_SQUARE);
bitMatrix = writer.encode("привет мир", BarcodeFormat.DATA_MATRIX, 0, 0, hints);
} catch (UnsupportedEncodingException e) {
//empty
}