Skip to content

简繁转换为什么不能逐字替换 ​

把简体转成繁体,看起来像是查表替换——一个字对一个字。实际上这条路走不通,原因藏在汉字简化的历史里。

一简对多繁 ​

简化字合并了一批原本不同的繁体字。最典型的例子:

简体繁体什么时候用
发髮头髮、理髮
发發發展、發現
干乾乾淨、乾燥
干幹幹活、幹部
干干干擾、干涉
面麵麵條、麵粉
面面面對、表面

一个「干」字对应三个繁体字,选哪个完全取决于它在哪个词里。逐字替换必然出错,而且错得很显眼——「头发」变成「頭發」,在繁体读者眼里就像把「头发」写成「头髮展」一样刺眼。

正确做法是先分词再转换:识别出「头发」是一个词,整词映射到「頭髮」。这也是为什么靠正则或查找替换做简繁转换总是会翻车。

还有词汇差异 ​

字形之外还有一层:两岸三地对同一事物用不同的词。

大陆台湾香港
软件軟體軟件
网络網路網絡
打印机印表機打印機
鼠标滑鼠滑鼠
视频影片影片

只做字形转换的话,「软件」会变成「軟件」——字是繁体了,但台湾读者读起来仍然是个陌生词。所以「转成繁体」需要先明确是转给谁看:台湾用语和香港用语并不相同。

字幕文件更要小心 ​

把字幕文件做简繁转换时,还多一层风险:字幕是带格式的文本。SRT 里有序号和时间轴,ASS 里还有样式标签(字体、颜色、位置)。

如果转换程序不区分正文和标记,会把时间轴里的数字、样式标签里的英文一并「转换」,结果是文件结构被破坏、播放器直接不认。

所以字幕转换必须先解析格式、只转正文字段,再按原格式写回——这和直接对整个文件做查找替换是两件事。

反方向同样有坑 ​

繁转简看似简单(多对一,不会歧义),但会丢信息且不可逆。「頭髮」和「發展」都转成「发」之后,再想转回繁体就必须重新做一次分词判断——转换链路上每多一轮,出错机会就多一次。

结论是:保留原始文本,转换只在输出时做一次,不要拿转换结果当新的原始文本继续加工。

什么时候该转、什么时候不该转 ​

有几类内容不该跟着一起转:

代码和命令。繁体的「發」在代码里没有意义,变量名、函数名、路径一旦被转换,程序直接跑不起来。

专有名词与商标。公司名、产品名的写法由持有者定,不该由转换程序改。「腾讯」在繁体语境里仍写作「騰訊」是对的,但有些品牌的官方繁体写法并不等于机械转换的结果。

引文。引用他人原文时改动字形,严格说已经不是原文了。学术写作里这一点尤其要注意。

实践上的做法是:转换前把这几类内容标记出来排除,或者转换后重点复查这几处。

顺带说说另外几类文本处理 ​

同一类里还有几个高频需求,都有类似的「看起来简单、细节要命」的特点:

汉字转拼音——多音字是绕不开的坎。「重庆」的「重」读 chóng,「重量」的「重」读 zhòng,同样需要靠词来判断。此外声调标注有三种常见写法(符号 ā、数字 a1、无声调 a),用在不同场景。

正则查找替换——批量改文本最快的工具,也最容易误伤。写完表达式先在「测试匹配」模式下看看究竟命中了什么,再执行替换;捕获分组能让你看清每一段匹配到的具体内容。

网页正文提取——把网页存成 Markdown 的难点不在抓取,在于剥掉导航、广告、推荐位这些噪声,只留正文。

相关工具 ​

最后更新:2026-09-05