【Python_Zebra斑马打印机编程学习笔记(三)】解决ZPL指令无法显示中文的问题

解决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, ... 指令更改字符集
在这里插入图片描述

指令字符编码
0USA1 (开机初始化设置)
1美国2
2英国
3荷兰
4丹麦/挪威
5瑞典/芬兰
6德国
7法国1
8法国2
9意大利
10西斑牙
11其它
12日本
13IBM 850码
15Shift-JIS,日本字库的曲线字库
28Unicode (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盘;
存储盘符说明:

存储盘符说明
RDRAM
BPCMCIA Card
EFlash 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、通过设置字符集、码表文件、字库文件改变默认字体

  1. 设置字符集:^CI28
  2. 设置码表文件:^SEE:GB18030.DAT^FS
  3. 设置字库文件: ^CWA,E:SIMSUN.FNT^FS
    注意:设置 Unicode 编码时,只需要字库文件即可

完整ZPL代码:

^XA
^CI28
^SEE:GB18030.DAT^FS
^CWA,E:SIMSUN.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`

预览得到的结果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/496981.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

进程间通信学习笔记(共享内存)

内存映射概念: 共享内存可以通过mmap()映射普通文件使一个磁盘文件与内存中的一个缓冲区相映射,进程可以像访问普通文件一样对文件进行访问,不必再强调read,write。 mmap的优点: 实现了用户空间和内核空间的高效交互方式 mmap的…

开源大模型LLM大爆发,数据竞赛已开启!如何使用FuseLLM实现大语言模型的知识融合?

开源大模型LLM大爆发,数据竞赛已开启!如何使用FuseLLM实现大语言模型的知识融合? 现在大多数人都知道LLM是什么,以及可以做什么。 人们讨论着它的优缺点,畅想着它的未来, 向往着真正的AGI,又有…

unity初学问题:如何修改图片的坐标

如图,我们想要修改图片的轴心点坐标(Pivot) 选择图片组 打开编辑器在里面修改即可(最下面的Custom Pivot)

C++之atexit-pthread用法详解

目录 1.atexit()函数使用说明 pthread_once() 函数详解 1.atexit()函数使用说明 NAME atexit - 用来注册执行 exit()函数前执行的终止处理程序.SYNOPSIS #include <stdlib.h> int atexit(void (*function)(void))&#xff1b;DESCRIPTION atexit()用来注册终止处理程序&…

51单片机(6)-----直流电机的介绍与使用(通过独立按键控制电机的运行)

前言&#xff1a;感谢您的关注哦&#xff0c;我会持续更新编程相关知识&#xff0c;愿您在这里有所收获。如果有任何问题&#xff0c;欢迎沟通交流&#xff01;期待与您在学习编程的道路上共同进步。 目录 一. 直流电机模块介绍 1.直流电机介绍 2.电机参数 二. 程序设计…

算法C++

枚举 1.化段为点 前缀和 eg:给一个数列&#xff0c;算x到y个数的和 #include <iostream> #include <vector> using namespace std;int main() {int n;cin>>n;vector<int> a(n);vector<int> sum(n1,0);for(int i0;i<n;i){scanf…

深入探究【观察者模式】:简单音乐会售票系统案例分析

文章目录 1.观察者模式概述基本概念&#xff1a;工作原理&#xff1a; 2.案例-音乐会抢票2.1.具体实现2.1.1.被观察者接口2.1.2.被观察者实现类2.1.3.定义观察者接口2.1.3.定义观察者实现类2.1.4.测试观察者 3.总结3.1.优点和局限性3.2.思考 1.观察者模式概述 观察者模式是一种…

网站三合一缩略图片介绍展示源码

网站三合一缩略图片介绍展示源码&#xff0c;PHP源码&#xff0c;运行需要php环境支持&#xff0c;效果截图如下 蓝奏云下载&#xff1a;https://wfr.lanzout.com/ihY8y1pgim6j

swagger-ui.html报错404,解决办法

swagger-ui.html报错404,解决办法&#xff01;现在后端开发项目中&#xff0c;为了节省时间&#xff0c;使用swagger插件&#xff0c;可以方便的快捷生成接口文档。但是如果你在请求前端页面路径比如&#xff1a;http://127.0.0.1:7777/swagger-ui.html。找不到。那是因为你的配…

部分卷积与FasterNet模型详解

简介 论文原址&#xff1a;2023CVPR&#xff1a;https://arxiv.org/pdf/2303.03667.pdf 代码仓库&#xff1a;GitHub - JierunChen/FasterNet: [CVPR 2023] Code for PConv and FasterNet 为了设计快速神经网络&#xff0c;很多工作都集中于减少浮点运算&#xff08;FLOPs&a…

【蓝桥杯】快读|min和max值的设置|小明和完美序列|​顺子日期​|星期计算|山

目录 一、输入的三种方式 1.最常见的Scanner的输入方法 2.数据多的时候常用BufferedReader快读 3.较麻烦的StreamTokenizer快读&#xff08;用的不多&#xff09; StreamTokenizer常见错误&#xff1a; 二、min和max值的设置 三、妮妮的翻转游戏 四、小明和完美序列 五…

flink学习之旅(二)

目前flink中的资源管理主要是使用的hadoop圈里的yarn&#xff0c;故此需要先搭建hadoop环境并启动yarn和hdfs&#xff0c;由于看到的教程都是集群版&#xff0c;现实是只有1台机器&#xff0c;故此都是使用这台机器安装。 1.下载对应hadoop安装包 https://dlcdn.apache.org/h…