跳转到主要内容

生僻字为什么打不出、显示不了

适合谁看:名字、地名里有生僻字,在系统里打不出、显示成方框或问号,想弄清原因的人。

一个字要「走通」三关

一个字从输入到显示,要过三关:

  1. 有编码:这个字在 Unicode / GB 18030 里有编号吗?
  2. 能输入、能存:输入法能打出来吗?软件、数据库能把它完整存下来吗?
  3. 有字形:当前用的字体里有这个字的字形吗?

任何一关不通,都会出问题。

看症状判断卡在哪一关

症状 最可能的原因 卡在哪
显示成空心方框「□」或带编号的小方块 字体里没有这个字 第 3 关
显示成「?」或「�」 存储或传输时编码出错,字已经丢了 第 2 关
显示成乱七八糟的其他字(乱码) 编码对不上,例如 GBK 当成 UTF-8 读 第 2 关
输入法打不出 输入法词库里没有,或这个字还没有编码 第 1 或第 2 关
同一段文字里这个字的字体明显不一样 主字体缺字,系统自动换了备用字体 第 3 关(已经补救)

方框和问号的区别很重要:方框说明字还在,只是没字形,换个字体就能显示;问号说明字已经丢了,换字体也救不回来。

为什么生僻字特别容易出问题

  • 编码靠后:常用汉字都在 Unicode 的基本区;很多生僻字在后来增加的扩展区,位于「辅助平面」,有些老软件、老数据库处理不了,见《Unicode 里的汉字:基本区和扩展区》;
  • 字体不全:多数字体只覆盖常用的几千到两万多字,扩展区的字很少有字体收录,见《一款中文字体要做多少字》;
  • 还没编码:极少数字还没有进入标准,只能临时用私用区或图片,见《私用区(PUA)里的字为什么靠不住》。

下一步看哪里

  • 想自己打出来:见《生僻字怎么输入》;
  • 想让网页或系统正常显示:见《网页和系统里怎么显示生僻字》;
  • 做业务系统、要存人名:见《人名、地名里的生僻字:系统怎么做》;
  • 显示成方框的通用排查:见《繁体、日文、生僻字显示成方框怎么办》。

参考资料