生僻字为什么打不出、显示不了
目录
适合谁看:名字、地名里有生僻字,在系统里打不出、显示成方框或问号,想弄清原因的人。
一个字要「走通」三关
一个字从输入到显示,要过三关:
- 有编码:这个字在 Unicode / GB 18030 里有编号吗?
- 能输入、能存:输入法能打出来吗?软件、数据库能把它完整存下来吗?
- 有字形:当前用的字体里有这个字的字形吗?
任何一关不通,都会出问题。
看症状判断卡在哪一关
| 症状 | 最可能的原因 | 卡在哪 |
|---|---|---|
| 显示成空心方框「□」或带编号的小方块 | 字体里没有这个字 | 第 3 关 |
| 显示成「?」或「�」 | 存储或传输时编码出错,字已经丢了 | 第 2 关 |
| 显示成乱七八糟的其他字(乱码) | 编码对不上,例如 GBK 当成 UTF-8 读 | 第 2 关 |
| 输入法打不出 | 输入法词库里没有,或这个字还没有编码 | 第 1 或第 2 关 |
| 同一段文字里这个字的字体明显不一样 | 主字体缺字,系统自动换了备用字体 | 第 3 关(已经补救) |
方框和问号的区别很重要:方框说明字还在,只是没字形,换个字体就能显示;问号说明字已经丢了,换字体也救不回来。
为什么生僻字特别容易出问题
- 编码靠后:常用汉字都在 Unicode 的基本区;很多生僻字在后来增加的扩展区,位于「辅助平面」,有些老软件、老数据库处理不了,见《Unicode 里的汉字:基本区和扩展区》;
- 字体不全:多数字体只覆盖常用的几千到两万多字,扩展区的字很少有字体收录,见《一款中文字体要做多少字》;
- 还没编码:极少数字还没有进入标准,只能临时用私用区或图片,见《私用区(PUA)里的字为什么靠不住》。
下一步看哪里
- 想自己打出来:见《生僻字怎么输入》;
- 想让网页或系统正常显示:见《网页和系统里怎么显示生僻字》;
- 做业务系统、要存人名:见《人名、地名里的生僻字:系统怎么做》;
- 显示成方框的通用排查:见《繁体、日文、生僻字显示成方框怎么办》。