中日韩文字:小票和后台单据为什么会排歪

一个汉字占两格。 几乎所有中文小票排版出问题,根子都在这一条 —— 程序按"字符个数"算宽度,而汉字实际占两个字符位。

80 毫米的纸一行能放 48 个英文字母,但只能放 24 个汉字。 中英混排的一行能放多少,得算,不能数。

这篇对你特别有用,就算你的小票是印当地语言的 —— 因为你的后台是中文的:采购单、盘点表、货架标签、厨房单,这些都是中文打印。

本文核对状态

宽度和换行规则是国际标准里写死的,稳定。打印机相关的部分要实测。

待核实 —— TODO: verify

  1. 你要买的打印机有没有中文字库(很多不是在亚洲卖的机器根本没有)。
  2. 进入和退出中文模式的具体指令。
  3. 中文模式实际要求哪种编码(厂商文档经常写错)。
  4. 字库覆盖不覆盖你要用的字 —— 生僻姓氏、繁体字。

一、宽度:先解决这个

字符 占几格
汉字、假名、韩文 2
全角符号 :``(``1 2
中文标点 。``、``《 2
半角片假名 1
英文字母、数字 1

按字符个数算 = 算错,而且是往"超出"的方向错,所以症状是排版溢出、列对不齐。

一行到底能放几个字

纸宽 总列数 商品名列 能放几个汉字
80 毫米 48 约 35 17 个
58 毫米 32 约 19 9 个

58 毫米上商品名列只能放 9 个汉字 —— 基本什么都放不下。 所以 58 毫米不是"把 80 毫米缩小",得让商品名单独占一行。 这不是将就,是唯一可行的排法。

选系统时问:58 毫米的模板是不是单独做的?中文商品名会不会被截断?

二、换行:中文能在任意两个字之间断,但有禁忌

中文不需要空格就能换行,这让换行变容易,也让"随便断"看起来很业余。

规矩是:

小票行数不多,简单处理就够:如果断行会把标点甩到下一行开头, 就把它前面那个字一起带下去。

三、打印机有没有中文字库 —— 这是最大的坑

大多数热敏打印机不认 UTF-8。中文比其他语言还多一层: 要先切到中文模式,打印机才会去查它内置的中文字库。

问题在于:很多打印机根本没有中文字库。

在欧美市场卖的机器尤其常见 —— 你发什么过去它都印方框或者空白。 这是"我这边测好好的、客户那边全是方框"最常见的原因。

所以选打印机时第一句话就问:这台机器有没有中文字库?

还有几件要实测(TODO: verify,厂商文档经常不准):

简体和繁体不能互换。 一套简体的商品资料拿到港台市场, 有些字客人是看不懂的;而且转换不是一对一的, 一个简体字可能对应好几个繁体字,机器转会转错。 两个市场都做的话,存两个名字,别指望系统实时转。

四、最稳的办法:图形打印

和阿拉伯语、泰语一样,让软件把小票渲染成图片再打印, 字库、编码、模式切换的问题一次全绕开,印出来就是你看到的样子。

中文这边比其他语言更值得这么做,因为另一条路要赌打印机的字库覆盖, 而那个你既看不到也改不了

代价是打印稍慢一点,日常用感觉不出来。

而且你的情况正好合适:后台中文单据 + 当地语言小票, 用图形打印就是一条路走通,不用维护两套。

五、验收清单

用你实际要买的打印机打,屏幕上看不出问题。

序号 打什么 合格标准
1 一个中文商品名 字印出来了,不是方框、不是空白
2 中文夹英文品牌的一行 列的位置对
3 三行长短不一的商品 金额小数点上下对齐
4 一个长到要换行的名字 断行没把 。``, 甩到行首
5 你自己店名里的字、生僻姓氏 印得出来
6 繁体字(如果做港台市场) 正确
7 80 毫米和 58 毫米各一张 都能看,58 毫米是重排不是压扁
8 重打一张旧单 和原来一模一样

第 5 条特别要试 —— 客人的店名、老板的姓,打不出来最尴尬。

六、哪些地方会用到

几乎所有部署都用得上,因为后台是中文的。

直接印给顾客的场景:马来西亚(中文在当地商业场合是真的在用), 以及所有中餐馆的厨房单 —— 厨房看中文、前厅说当地话, 这是这份资料里反复出现的配置,见各国的开餐厅章节。

日文、韩文除了本国市场,海外的日料店、韩餐厅也会用到。

七、挑系统时该问清楚的问题

  1. 中文的宽度你们是怎么算的? 一个汉字算一格还是两格?
  2. 58 毫米的模板是单独做的吗?中文商品名会不会被截断或者排歪?
  3. 中文小票是靠打印机字库,还是软件渲染成图片打印?
  4. 我要买的这台打印机有中文字库吗? 用它现场打一张给我看。
  5. 我店名里的字 [具体写出来] 能不能打出来?
  6. 繁体和简体能不能存两个名字?(做港台市场才需要)
  7. 换行会不会把标点甩到行首?
  8. 后台中文单据(采购单、盘点表、货架标签)和当地语言小票, 是同一套打印方式吗?

第 1 条和第 4 条答不上来的,基本没认真做过中文。


由秘奥软件(MISAll)团队维护。最后更新:2026-08