Принтер Zebra печатает символ UTF-8 в виде двух символов ASCII - PullRequest
3 голосов
/ 11 марта 2020

Печать на Zebra ZQ510 с использованием режима «line_print» на чековой бумаге с непрерывной подачей.

! U1 setvar "ezpl.media_type" "continuous"  \r\n  
! U1 setvar "device.languages" "line_print" \r\n 
! U1 ENCODING UTF-8  \r\n
! U1 SETLP 5 0 28  \r\n
! U1 PAGE-WIDTH 580  \r\n
! U1 BEGIN-PAGE \r\n
Has the person to be vaccinated ever had      \r\n
Guillain-Barré syndrome?: \r\n
! U1 END-PAGE \r\n

Вышеуказанные команды выводятся на соединение принтера с использованием этого кода Objective- C для кодирования двоичных данных как UTF-8:

-(void) printCommands: (NSString*) tPrintCommands {
    ...
    [aPrinterConn write:[tPrintCommands dataUsingEncoding:NSUTF8StringEncoding] error:&aError];
    ...
}

Но вместо «Барре» я получаю «Барре» на распечатке. Кажется, что Unicode "é" обрабатывается принтером как 2 отдельных символа.

Я попытался заменить ! U1 ENCODING UTF-8 \r\n на ! U1 COUNTRY UTF-8 \r\n, и я поместил ! U1 ENCODING UTF-8 \r\n до и после BEGIN-PAGE. Один и тот же результат каждый раз.

...