2013-03-24 3 views
3

У меня проблема с принтером Zebra RW220, не печатающим сербские латинские символы, например čćžšđ. Я разработал приложение для Android, которое использует принтер. Печатная часть основана на Zebra SDK. Вот часть кода:Zebra printer сербские латинские символы

private byte[] getConfigLabel() { 
    PrinterLanguage printerLanguage = printer.getPrinterControlLanguage(); 
    byte[] configLabel = null; 
    if (printerLanguage == PrinterLanguage.ZPL) { 
     try { 
      configLabel = "^XA^FO17,16^GB379,371,8^FS^FT65,255^A0N,135,134^FDTEST^FS^XZ".getBytes("UTF-8"); 
     } catch (UnsupportedEncodingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } else if (printerLanguage == PrinterLanguage.CPCL) { 
     String cpclConfigLabel = "! 0 200 200 780 1\r\n" + "T ARIAL9PT.CPF 0 60 10 ABCČĆŽŠĐ\r\n" 
     + "PRINT\r\n"; 
     configLabel = cpclConfigLabel.getBytes(); 
    } 
    return configLabel; 
} 

Шрифт, используемый в Arial, который я преобразовал с помощью Zebra утилит для СПЛ, для использования с принтером. Я также добавил символы в шрифт, но он не печатает их. В этом примере он просто печатает ABC. И с системными шрифтами он печатает некоторые странные символы. Я также попытался добавить строку «ENCODING UTF-8» до «T ARIAL9PT.CPF 0 60 10 ABCČĆŽŠĐ \ r \ n», но он ничего не делает, то же самое с системными шрифтами. Как я могу напечатать сербские латинские символы? Благодарю.

EDIT: ISO-8859-2 печатает Č и Ć, но не Ž.

+1

Попробуйте использовать последние 'getBytes()': 'cpclConfigLabel.getBytes (« ISO-8859-5 »);« Или «UTF-8». Попробуйте '\ u010d' вместо' č', чтобы исключить проблемы с исходной кодировкой java. –

+0

Не помогло ... «ISO-8859-5» не печатает čćžšđ, даже как \ u010d, а UTF-8 бросает странные символы. –

ответ

2

Наконец, решение было использовано в кодировке «CP1250», также известной как Windows-1250.