越南文:是拉丁字母,但比拉丁字母难得多
越南文用的是拉丁字母,可它一个元音上面能叠两个符号 —— 一个管音色,一个管声调,所以超出英文字母的字符有一百三十多个。
关键一点:没有任何单字节字符集能完整覆盖它,包括那个名义上就是为越南文做的。
出错的严重程度介于两者之间:比重音符号丢失明显(那个还能读), 比阿拉伯语乱码隐蔽(那个一眼看得出)。 越南文小票掉了声调符号,不懂的人看着还像越南文,越南人读出来是另一个词。
本文核对状态
文字规则稳定,打印机相关的要实测。
待核实 ——
TODO: verify
- 打印机支不支持越南文字符集,编号多少。
- 字库覆盖不覆盖完整的字符集。
- 供应商给的商品资料是不是老编码格式。
一、一个元音上叠两个符号
| 层 | 例子 |
|---|---|
| 基础元音 | a e i o u y |
| 音色符号 | â ă ê ô ơ ư |
| 声调符号 | 五个声调 |
| 两个都有 | ế ộ ữ ằ ợ |
另外 đ 是一个独立的字母,不是"带横杠的 d",不能当成 d 处理。
二、为什么选对字符集也不够 —— 这是核心
大多数打印机不认 UTF-8,要走单字节字符集。越南文的候选:
| 编码 | 问题 |
|---|---|
| CP1258 | 名义上的越南文字符集。覆盖不全 —— 有些字它是拆成"基础字母 + 声调符号"两部分存的,转换时声调就丢了。 |
| TCVN3(ABC) | 老编码,大小写还分成两套字体。老资料里常见。 |
| VNI | 另一套老编码,拆法又不一样。 |
所以「我们设了 CP1258」不等于越南文能正确打印。 设对了照样可能掉声调。
这一条要跟供应商说清楚:别只告诉我设了哪个字符集,打一张给我看。
三、供应商给的资料是重灾区
越南做了很多年的供应商,给的商品表格经常是 TCVN3 或者 VNI 老编码的, 不是 Unicode。导进系统会变成乱码,或者更糟 —— 变成看起来像那么回事、其实是错的文字。
处理办法:
- 先导一小批试,别一次导几千个商品名
- 找越南人看一眼导入结果
- 导入时做标准化处理
商品资料一旦导错,后面价格、库存都挂上去了,再回头改代价很大。
选系统时问:我供应商给的这个 Excel,你们导一遍给我看结果。
四、图形打印
越南文建议直接用图形打印(软件渲染成图片再打), 因为另一条路要赌字符集覆盖,而那个已经知道是覆盖不全的。
和泰文不一样的是:越南文的词之间是有空格的,换行按空格断就对, 不需要专门的断词算法。只要别从词中间断就行。
五、宽度、排序、货币符号
宽度:每个字符占一格,好算。
长度:越南文词短但多,商品名换行比中文英文都频繁。 58 毫米的小票要留出商品名占两行的余地(见越南那篇)。
排序:越南文字母表里 đ 排在 d 后面,带音色符号的元音排在基础元音后面。
按字符编码排序排不出这个顺序。 商品列表和搜索要用越南文排序规则,
不然店员找东西费劲 —— 和泰文那篇是同一个道理。
货币符号 ₫ 很多打印机字库里没有。验收时确认能打出来,
打不出来就印 VND,别印成方框。
另外越南盾千位用点、不带小数,这是格式问题,见越南那篇 —— 但它和声调符号一起,构成"一张越南小票看起来对不对"的两半。
六、验收清单
用实际要买的打印机打,找越南人看。
| 序号 | 打什么 | 合格标准 |
|---|---|---|
| 1 | Cà phê sữa đá |
每个声调和音色符号都在 |
| 2 | Nguyễn |
ễ 上叠的符号正确 |
| 3 | 带 đ 的词 |
印出来是 đ 不是 d |
| 4 | Tổng cộng: 1.234.567 ₫ |
符号对、点号还在当千位分隔、₫ 印得出来 |
| 5 | 从供应商表格导入的商品名 | 和第 1 条一样正常 |
| 6 | 三行长短不一的商品 | 金额对齐 |
| 7 | 商品列表排序 | đ 排在 d 后面 |
| 8 | 重打一张旧单 | 和原来一模一样 |
第 5 条最关键 —— 这是唯一一条用「不是你自己打出来的数据」做的测试, 也是最容易出问题的那条。
七、挑系统时该问清楚的问题
- 越南文小票是靠字符集还是图形打印? 用我要买的打印机打一张给我看。
- 我供应商这个 Excel 导进去会不会乱码? 现场导一遍。
- 商品名太长换行会不会从词中间断?
- 商品列表和搜索用的是越南文排序吗?
₫能不能打印?打不出来会退回印VND吗?- 58 毫米小票上,长的越南文商品名怎么排?
- 商品能不能存中文名和越南文名两个名称?
第 1、2 条一定要当场看演示,口头承诺没用。
由秘奥软件(MISAll)团队维护。最后更新:2026-08