Objective c Zebra打印机将UTF-8字符打印为两个ASCII字符

Objective c Zebra打印机将UTF-8字符打印为两个ASCII字符,objective-c,zebra-printers,zpl,Objective C,Zebra Printers,Zpl,在连续进纸接收纸上使用“line_print”模式打印到Zebra ZQ510 ! 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 pers

在连续进纸接收纸上使用“line_print”模式打印到Zebra ZQ510

! 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];
    ...
}
但我在打印输出上看到的不是“Barré”,而是“BarrÔ。似乎Unicode“é”被打印机视为两个独立的字符


我已经试过替换
!U1用
编码UTF-8\r\n
!U1国家/地区UTF-8\r\n
,我已经定位了
!U1编码UTF-8\r\n
BEGIN-PAGE
之前和之后。每次都是相同的结果。

此文档是否回答了您的问题:摘录:
请注意,这是使用编码^CI0并从文本文件本身读取UTF-8编码字符,而文本文件本身不需要任何中文字体!在^FD命令中,B0050表示8位字节模式,“0050”是字符数,该值必须大于实际值,并且必须正好是4位十进制数字。
@Jay。谢谢,但是这个答案只适用于ZPL,它与我需要用于我的应用程序的line_打印模式不兼容。您是否可能以某种方式保存了包含示例说明(粘贴的)的文件,该文件是用拉丁语(或其他非utf8)编码保存的?Étoé问题很常见,其根源在于二进制数据如何通过不同编码进行解释。查看您是否在Windows上运行,您的终端可能在默认情况下不使用UTF-8。您可以通过运行
chcp 65001
@Everett来更改当前会话的编码。我添加了代码片段,以便您可以看到数据是UTF-8编码的。这可能是字体问题。打印机使用哪种字体?