解决ZPL指令无法显示中文的问题
- 解决ZPL指令无法显示中文的问题
- 前言
- 一、问题描述
- 二、字符集、码表文件、字库文件
- 1、字符集
- 2、码表文件
- 3、字库文件
- 三、两种设置中文字体的方式
- 1、通过设置字符集、码表文件、字库文件改变默认字体
- 2、通过^CF指令设置标准字体名称改变默认字体
解决ZPL指令无法显示中文的问题
前言
本文介绍如何解决 ZPL 指令无法显示中文的问题,有需要的读者可以点赞收藏,也欢迎在评论区进行讨论。
一、问题描述
在 Labelary Online ZPL Viewer 上对编写的 zpl 文档预览时发现当标贴中又需要打印中文时,会出现乱码,如下图所示:
ZPL为:
^XA
^FO50,50 ^ADN30,30^FD标贴:Label^FS
^XZ
二、字符集、码表文件、字库文件
在解决该显示中文问题前,需要明确几个概念:字符集、码表文件、字库文件
1、字符集
可以理解为编码格式,ZPL 提供了各种国际字符字体:美国、英国、荷兰、丹麦等,遵循国际字符的ISO标准。
在 ZPL 语言中用 ^CI charset, src1, dest1, src2, dest2, ...
指令更改字符集
指令 | 字符编码 |
---|---|
0 | USA1 (开机初始化设置) |
1 | 美国2 |
2 | 英国 |
3 | 荷兰 |
4 | 丹麦/挪威 |
5 | 瑞典/芬兰 |
6 | 德国 |
7 | 法国1 |
8 | 法国2 |
9 | 意大利 |
10 | 西斑牙 |
11 | 其它 |
12 | 日本 |
13 | IBM 850码 |
15 | Shift-JIS,日本字库的曲线字库 |
28 | Unicode (UTF-8 编码) |
要选取中文编码,常用的字符集为28,Unicode 字符集,ZPL 指令为:^CI28
2、码表文件
码表文件,即字符编码文件,当设置完字符集后,需要选择对应的字符编码文件;
注意:当设置为 Unicode 编码时,不需要设置码表文件;当使用 ANSI 编码时必须配置码表文件。
编码说明:
编码 | 说明 |
---|---|
ANSI 编码 | 双字节内码,2个字节=1个文字 |
ASCII 编码 | 单字节内码,1个字节=1个文字 |
Unicode 编码 | 3个+字节=1个文字 |
UTF-8 编码 | 对 Unicode 进行“压缩” |
在 ZPL 语言中用 ^SE path
指令更改码表文件,如^SEE:GB18030.DAT^FS
,
其中,E:
为默认存储位置,大多数机器都默认存储在E盘;
存储盘符说明:
存储盘符 | 说明 |
---|---|
R | DRAM |
B | PCMCIA Card |
E | Flash Memory |
常用的中文码表有 :GB.DAT、GB8BIT.DAT、GB2312.DAT、GB18030.DAT;
注意:在 Labelary Online ZPL Viewer 中无法设置码表文件。
3、字库文件
也就是字体文件,字库文件后缀为 FNT 或 TTF ,字库文件需要自行下载,可以在 斑马的打印机官网 上获取;
在 ZPL 语言中用 ^CW fontName, path
指令更改字体文件,如^CW1,R:MYFONT.FNT
,其中 1 为定义的字体标识名称。
自定义标识名称时不能使用 ZPL 标准的字体名称 (A, B, C, D, E, F, G, H, P, Q, R, S, T, U, V, 0)
三、两种设置中文字体的方式
1、通过设置字符集、码表文件、字库文件改变默认字体
- 设置字符集:
^CI28
- 设置码表文件:
^SEE:GB18030.DAT^FS
- 设置字库文件:
^CWA,E:MSUNG.FNT^FS
注意:设置 Unicode 编码时,只需要字库文件即可
完整ZPL代码:
^XA
^CI28
^SEE:GB18030.DAT^FS
^CWA,E:MSUNG.FNT^FS
^FO30,30^FD标贴Label^FS
^XZ
注意:上述代码无法在 Labelary Online ZPL Viewer 中实现预览
2、通过^CF指令设置标准字体名称改变默认字体
想在 Labelary Online ZPL Viewer 还有另一种方式,即通过 ^CF 的标准字体名称来设置字体
在 ZPL 语言中用 ^CF fontName, height, width
指令设置字体、字体高度、字体宽度
ZPL 提供了一些标准的字体名称,如 A, B, C, D, E, F, G, H, P, Q, R, S, T, U, V, 0
Labelary 也有特定的标准字体名称,如J, L, N;其中 J 为中文字体名称;
在设置字体前,也需要设置字符集,也就是字体编码。
`^XA
^CI28
^CFJ,30,30
^FO50,50^FD标贴Label^FS
^XZ`
预览得到的结果如下: