在俄语区开店:西里尔字母小票会遇到什么问题

先说结论:俄文、哈萨克文这类西里尔字母,排版上比阿拉伯语、泰文省事得多 —— 不用从右往左排,不用连笔,也不用管符号叠层。它真正的麻烦不在打印上,在数据里, 而且两个坑里有一个,不专门去查永远发现不了。

两个坑:

一个是乱码。俄语世界有两套互不兼容的老字符集同时在用, 打印机可能是这套、软件可能是那套,配错了整张小票是乱的。 这个坑至少是明的 —— 一眼能看出来,后面教你怎么看出是哪里错了。

另一个是暗的:西里尔字母里有十几个字母,和英文字母长得一模一样, 但电脑当成两个完全不同的字。店员录商品名的时候中英文键盘一切换, 录出来的名字看着一点问题都没有,但搜不到、对不上、盘点会多出一条。 这个坑不打样张,不看数据,永远发现不了。

如果你在俄罗斯、哈萨克斯坦、吉尔吉斯斯坦、蒙古、乌克兰、塞尔维亚这些地方开店, 这篇值得看完。

本文核对状态

文字编码和排序规则是国际标准里写死的,这部分比较稳定, 里面的字符编号都是照 Unicode 标准数据库核对过的。 和打印机型号有关的部分各家不一样,必须拿你实际要买的机器去试。

待核实清单 —— TODO: verify

  1. 你要买的那台打印机,俄文走的是 CP866 还是 Windows-1251 这一套, 开机默认是哪个。这一条最关键,必须打样确认,见第三节。
  2. 打印机自带字库有没有西里尔字母。
  3. 打印机会不会把俄文字母印成两倍宽。 从国内带的机器有这个风险, 见第五节。
  4. 卢布符号 (以及坚戈 、格里夫纳 、索姆 、图格里克 ) 打印机印不印得出来。
  5. 当地是不是强制要用税控收银机。 是的话,小票格式和编码由那台机器说了算, 不是你的软件说了算。这份资料没有任何一个西里尔字母国家的国家篇, 税务这块完全没整理过,必须另外问当地会计。
  6. 当地小票上货币符号放哪、小数点用逗号还是句点、千位怎么分隔。
  7. 哈萨克斯坦改用拉丁字母这件事现在进行到哪一步了。
  8. 保加利亚换欧元之后的标价规则 —— 见第七节,几个来源说法不一致。

一、好消息:这类文字排版不难

如果你听说过阿拉伯语、泰文那些麻烦事,可以放心,西里尔字母一样都没有

别的语言的麻烦 西里尔字母
从右往左排 没有,和中文英文一样从左往右
字母连笔,位置不同长得不一样 没有,每个字母一个样
符号叠三四层,容易被切掉 没有
词之间不空格,换行要专门算法 没有,和英文一样按空格断行
一个字占两格 正常是一格 —— 但有个例外,见第五节

所以真正要盯的只有下面几件事。

二、最阴的坑:长得一模一样的字母

俄文里有一批字母,和英文字母看上去完全一样,但在电脑里是两个不同的字:

俄文字母 英文字母 俄文字母 英文字母
А A а a
В B е e
Е E о o
К K р p
М M с c
Н H у y
О O х x
Р P
С C
Т T
У Y
Х X

注意 Н 对应的是英文的 HР 对应的是 PС 对应的是 CУ 对应的是 Y形状一样,读音和编码都不一样。

这会造成什么

店员录商品的时候,俄文键盘和英文键盘是同一个物理按键,切换一下就变。 录完谁也看不出问题,然后:

你自己怎么验

验收的时候当着供应商的面做这个测试:

  1. 让他们在系统里录一个俄文商品名。
  2. 你再录一个,名字故意其中一个字母用英文键盘打(比如把 С 打成 C)。
  3. 看系统的反应: - ✅ 系统提示"疑似重复商品"或者直接拦下来 → 做过俄语区的项目 - ❌ 系统安安静静新建了第二条 → 这个坑将来天天踩

你自己怎么防

这三条写进店里的规矩,比什么系统功能都管用:

  1. 商品编码、货号只用数字。 不用字母,这个坑一半就没了。 如果一定要用字母,规定只能用英文键盘打,并且让系统禁止编码里出现俄文字母。
  2. 商品名以当地店员录入为准,你不要自己拼。
  3. 定期让系统跑一遍"同名重复商品"检查。 这个要在买之前就问清楚有没有。

发现重复了不要让系统自动合并。 那两条记录可能已经各自有几个月的进销存了, 自动合并会把账搅乱。要的是列出来、人工看、手工处理。

三、乱码怎么看:看到什么等于哪里错了

俄文乱码是能从样张上看出病因的,这一点比其他语言好办。 打一张样张,对照下面这张表:

你看到什么 说明什么 好不好修
大写字母的位置全是横线、竖线、方块这种"表格线",小写是俄文但不对,中间夹着 № ¤ ■ √ ° 软件按 Windows-1251 发,打印机按 CP866 收。最常见的一种 好修,改一边的设置
大写位置变成一堆引号、破折号、 反过来了:软件按 CP866 发,打印机按 Windows-1251 好修
每个俄文字母变成两个奇怪的字符,很多以 РСÐ 开头 软件按 UTF-8 发,打印机按老字符集收 好修
一个字母一个 ? 或者一个空格,英文数字正常 文字在软件那一端就已经被丢掉了,还没到打印机 要改软件,改打印机没用
一个字母一个方框,间距很整齐 打印机没有俄文字库 换机器,或者改走图形打印
俄文是对的,但哈萨克语、乌克兰语特有的那几个字母不对 大方向对了,用的子版本不对 好修
字都对,就是每个字宽了一倍 不是乱码,是字库问题,见第五节 见第五节

这张表里最要紧的是分清两种"看起来都坏了"的情况:

这两种长得一样破,原因和修法完全不同。跟供应商反馈的时候说清楚是哪一种, 能省掉好几个来回。

四、ЁЙ:搜不到货的另外两个原因

Ё 这个字母,俄国人自己经常写成 Е 同一个商品, 供应商目录里写 ёлка,你店里录成 елка,两边都算对,但互相搜不到。

要问供应商:搜索的时候能不能把 ёе 当成一回事? (注意是搜索时,不是把数据改掉。)

Й 上面那个小弯钩容易掉。 这个字母在电脑里有两种存法, 一种是整体一个字,一种是「И + 一个弯钩」。第二种走老字符集打印的时候, 弯钩会被丢掉,Й 变成 И

麻烦在哪:Йогурт(酸奶)变成 Иогурт它还是一个像模像样的俄文词, 不是方框也不是问号,你完全看不出来,只有当地人念一遍才知道不对。

验收的时候样张上一定要有一个带 Й 的词,看那个小弯钩在不在

五、从国内带打印机的,看这一节

这一条中文版专门写,因为它主要发生在从中国买机器的店主身上。

国际标准里,俄文的 33 个字母被归成一类叫"宽度不确定"的字符 —— 在西文字库里是一格,在中文字库里是两格。 标准原话是这类字符"有时宽有时窄,光看字符本身定不了"。

所以:一台为中国市场做的打印机,字库是中文的, 它可能把俄文字母按中文一样印成两倍宽。

结果是:

怎么验: 让供应商用你实际要买的那台打印机打一张样张, 上面要有三行长度不同的俄文商品名加金额。看两件事:

  1. 小数点是不是上下对齐成一条竖线;
  2. 一行大概能放多少个俄文字母 —— 80mm 纸正常能放 48 个左右字符, 如果只放得下二十几个,就是被当两格了。

俄文商品名本来就长,而且不像中文那样一个字顶好几个字母的信息量, 所以 58mm 纸基本不够用。建议直接上 80mm,商品名单独一行、金额另起一行。

六、卢布符号打不出来

俄罗斯卢布的符号是 ,国际代码 RUB

这个符号有个硬问题:它是 2014 年才进国际标准的, 而第三节里说的那几套老字符集全都是那之前定下来的 —— 所以里面根本没有这个符号, 不是"可能没有",是"按定义就不可能有"。

同类的还有:哈萨克斯坦坚戈 、乌克兰格里夫纳 、蒙古图格里克 、 吉尔吉斯斯坦索姆 (这个更新,几乎可以肯定打不出来)。

两个办法,问供应商能不能做:

  1. 印国际代码RUBKZTUAHKGSMNT。 价格位置出现三个字母,比出现一个黑方块强得多。
  2. 印当地习惯的缩写:俄语里 руб. 这种写法用了很多年, 而且老字符集里都打得出来,当地人也认。

TODO: verify 到底印哪个、符号放数字前面还是后面 —— 问当地会计或同行, 别让软件按中国习惯默认。

还有金额格式: 俄语、乌克兰语、哈萨克语的习惯是 小数点用逗号、千位用空格 —— 1 234,56。 这和国内 1,234.56 正好反过来。买之前问清楚这个能不能设。

七、几件和钱有关的、正在变的事

保加利亚已经换成欧元了。 2026 年 1 月 1 日起保加利亚采用欧元, 固定汇率 1 欧元 = 1.95583 列弗,列弗到 2026 年 2 月 1 日停止流通。 换币期间要求商品同时标两种货币的价格,这个双标价要求 按二手来源的说法在 2026 年 8 月 8 日结束,之后只能标欧元、 列弗只能作参考。注意:有的来源给的结束日期不一样, 这几条全都是二手消息,没有向保加利亚官方核实过。 在保加利亚开店的,这条一定要自己确认。

哈萨克斯坦在从西里尔字母改成拉丁字母,时间表改过好几次。 对开店的影响不看具体日期:未来几年数据里两种字母会同时存在, 同一个商品可能有两个名字。选系统的时候要问: 一个商品能不能存两个当地语言的名字,搜索能不能两种都搜得到。

乌兹别克斯坦官方用拉丁字母,但看得懂西里尔字母的人还很多; 蒙古用西里尔字母,还多两个字母 ӨҮ,很多字符集里没有。

八、哈萨克语、蒙古语要特别问一句

上面说的 Windows-1251 这套字符集,只够用来打斯拉夫语系那几种: 俄语、乌克兰语、白俄罗斯语、保加利亚语、塞尔维亚语、马其顿语。

哈萨克语、蒙古语、塔吉克语、乌兹别克语(西里尔写法)都不够。 它们各自还有几个特有字母 —— 哈萨克语的 ә ғ қ ң ө ұ ү һ і、 蒙古语的 ө ү —— 这些字母不在里面

所以在哈萨克斯坦、蒙古、吉尔吉斯斯坦开店的, 不能只问"支不支持俄文",要问"支不支持哈萨克文/蒙古文", 这是两个问题。答案通常是要走图形打印(把小票当成一张图片打), 这个方式慢一点,但什么字都能印。

验收样张上一定要有一个带本地特有字母的真实商品名,不能只用俄文商品试。

九、语言怎么配

在俄语区开店的华人商户,通常三种语言同时跑,这三个必须能分开设

用在哪 设成什么 谁看
收银台界面 俄语(或当地语言) 本地店员
后台、报表、进货单 中文 你自己
小票、给顾客的单据 俄语(或当地语言) 顾客

商品要能存两个名字:一个当地语言的印在小票和货架标签上, 一个中文的你自己在后台认。你不可能靠认俄文来盘点。

在哈萨克斯坦这种正在改字母的地方,可能需要三个名字 (中文、西里尔、拉丁),买之前就要问清楚。

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

这几条直接拿去问供应商,答不上来的就是没做过:

  1. 我要买的这台打印机,俄文走的是 CP866 还是 Windows-1251?你们试过没有? —— 这是第一个问题。俄语区这两套都在用,没有哪个是"默认安全"的, 答不上来的基本没做过。

  2. 能不能先打一张样张给我?上面要有:一个俄文商品名、一个带英文品牌的商品名、 一个带 Й 的词、一个带 Ё 的词、三行不同长度的商品和金额、 一个 符号、一个 -10% 的折扣行。 —— 拿到按第三、四、五节自己对照着验。

  3. (在哈萨克斯坦、蒙古、吉尔吉斯斯坦开店的) 哈萨克文(蒙古文)的特有字母能不能打?样张上加一个真实的本地商品名。

  4. 商品名录错脚本(俄文字母混英文字母)系统会不会提示? 有没有"疑似重复商品"检查? —— 当场用第二节的办法试。

  5. 商品编码能不能限制只用数字或只用英文字母?

  6. 商品列表按名称排序,Ё 开头的商品排在哪? —— 正确答案是排在 Е 后面。排在最前面或者最后面, 说明排序是按编码顺序做的,整个商品列表的顺序都不对。

  7. 印不出来的时候能改成印 RUB 或者 руб. 吗?是配置项还是要改程序? 金额能不能设成 1 234,56 这种格式?

  8. 一个商品能不能存中文名和当地语言名两个名字?收银台、后台、小票三个语言能不能分开设?

  9. 80mm 和 58mm 两种纸各打一张。 —— 俄文商品名长,窄纸最容易露馅。

  10. 当地要不要用税控收银机?你们的系统和那台机器怎么对接? —— 这一条你自己一定要向当地会计或同行再确认一次,别只听软件供应商的。

最后提醒一句:这份资料目前没有俄罗斯、哈萨克斯坦这些国家的国家篇, 税率、发票要求、收银机备案、小票必印内容这些一项都还没整理。 这篇只讲文字、编码和打印,税务和单据合规必须另外问当地会计,别拿这篇当依据。


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