Character encoding 关于代码页使用的术语和概念

Character encoding 关于代码页使用的术语和概念,character-encoding,terminology,codepages,Character Encoding,Terminology,Codepages,我在研究代码页的过程中,遇到了许多术语的冲突用法,甚至在不同的维基百科条目中。我就是找不到一个信息源,它可以解释从头到尾的整个字符处理过程。熟悉这一领域的人能否提出以下信息不准确或不正确的方式: 据我所知,字符表示的过程: 我们从一组与任何特定平台都不相关的符号开始(这里不确定正确的术语,可能是“脚本”)例如,西里尔字母“在Windows上下文中指的是与Linux中相同的实体 这些集合的成员通常是由供应商选择的,以形成特定于平台的字符集。平台可能会分配这些不同的代码,例如Windows上的GD

我在研究代码页的过程中,遇到了许多术语的冲突用法,甚至在不同的维基百科条目中。我就是找不到一个信息源,它可以解释从头到尾的整个字符处理过程。熟悉这一领域的人能否提出以下信息不准确或不正确的方式:

据我所知,字符表示的过程:

  • 我们从一组与任何特定平台都不相关的符号开始(这里不确定正确的术语,可能是“脚本”)例如,西里尔字母“在Windows上下文中指的是与Linux中相同的实体

  • 这些集合的成员通常是由供应商选择的,以形成特定于平台的字符集。平台可能会分配这些不同的代码,例如Windows上的GDI值(例如,ANSI_字符集的0和此处提到的其他代码:)。我找不到关于这些集合的太多信息,比如它们是否实际上是编码字符集,或者它们是否只是无序和抽象的

  • 从这些集合中,可以开发出具有GDI值的一对一映射的各个代码页。由于这些GDI值似乎表示依赖于平台的集合,这是否意味着Windows代码页本质上是每个集合的编码版本

我很难将这一想法与之前向我展示的一个链接(我丢失了这个链接),该链接显示了这些GDI字符集和跨不同平台的代码页之间的一对多映射。这是否准确,这些GDI值是否指向可以在不同平台上开发不同代码页的集合

  • 每个代码页将抽象字符集的一个成员映射到一个整数上,以表示其在集合中的位置。对于上述网页中提到的“更简单”代码页,可以使用更精确的“字符映射”术语来指代这些代码页。这个术语值得考虑吗,还是区别太微妙和不重要了

  • 如果字体包含用于代码点的字形,则字体将代码点解析为字形,否则会报告失败。我还读到,字体可能会返回它自己的空白字形,用于它不支持的代码点。应用程序能否区分此空白图示符和成功解析,即字体是否返回与此空白图示符排序的错误代码


我相信这就是我困惑的程度。这方面的任何澄清都是非常宝贵的。提前感谢。

你基本上是对的:

  • 从已知字符数开始
  • 选择此字符的子集(字符集)
  • 将这些映射到位模式(代码页和编码)
  • 通过将字符与字形组合(即使用字体、位模式和将位模式映射到字符的代码页/编码),将这些字符呈现到输出设备
在不同的平台上,有类似的代码页。甚至在许多代码页中,也存在类似的值到字符的映射。例如,Windows Latin、Mac Roman和unicode为前127个值共享字符。代码页有一些标准化(例如日语),以便机器可以交互


一般来说,对于新的开发,您应该使用带有流行编码之一的unicode代码页。UTF8在大多数现代系统上都很流行。UTF16LE用于以W结尾的Windows系统调用。

这可能是一个很好的匹配:

代码页比位模式高一级。更安全的做法是在为字符分配数字的级别和物理表示(位)之间进行区分。例如html/xml敥;仍然是Unicode编码,但位不是您所期望的。如果您使用Unicode标准(第3章),它们将区分“Unicode编码形式”(即UTF-16)和“Unicode编码方案”(即UTF-16LE/UTF-16BE)。()