utf8编码问题?

红框处“严”Unicode是4E25,这个值是怎么知道的?人为查表可以理解,但比如我键盘输入“严”,计算机是怎么知道这个值的?网上查了一些资料,看到有输入码、交换码、机内码这些概念,没太理解这里的转换原理,求解答。

阅读 1.6k
2 个回答

为啥查表只能“人为”呢?计算机也可以查表啊……

你可以理解为 UTF-8 本身就有一个大表维护了字符和编码的映射关系啊……

你要是想问这个“大表”是咋来的,那是有一个标准化组织,叫 The Unicode Consortium (统一码联盟)制订出来的。

P.S. 你说的输入码啥的,那是输入法里的概念,跟 UTF-8 无关(非说无关也不完全对,Unicode 对于输入法来说就是所谓“内码/机内码”)。或者其实你想问的是输入法的工作原理?

码表是人定义的,也就是说,标准中定义了 4e25 这个编码代表 字。但定义了还需要实现,在人机交互这个层面,是通过“字体”来实现的。字库为 4e25 这个编码画了一个字形,就是“严”字。所以如果使用一种不含中文字的字体,是不能显示汉字的。或者有些手写体,只实现了 3000 左右的汉字,那不常用字是显示不出来的。当然有时候你会发现系统也能显示,那是因为设置的字体中虽然没有,但是可以降低使用系统的默认字体,这要靠系统和软件的支持。

至于计算机和计算机的交流……就 4e25 啊,没毛病,你可能理解不了,但计算机能理解,它本来就是理解二进制的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进