跳转到主要内容

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

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

一个字要「走通」三关

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

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

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

看症状判断卡在哪一关

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

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

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

下一步看哪里

参考资料

参考资料(3)
    1. W3C:字符编码入门:https://www.w3.org/International/questions/qa-what-is-encoding
    Unicode 中日韩汉字常见问题:https://www.unicode.org/faq/han_cjk.html GB 18030-2022 全文(维基文库):https://zh.wikisource.org/wiki/GB_18030-2022_%E4%BF%A1%E6%81%AF%E6%8A%80%E6%9C%AF_%E4%B8%AD%E6%96%87%E7%BC%96%E7%A0%81%E5%AD%97%E7%AC%A6%E9%9B%86全文,维基文库 字符编码入门,W3C 中日韩汉字常见问题(英文),Unicode 联盟