代码页的使用术语和概念

4
我正在研究代码页,并发现在不同的维基百科条目中,术语使用存在许多冲突。我无法找到一份全面解释字符处理过程的信息来源。请精通该领域的人指出以下信息的错误或不准确之处:
字符表示过程如下:
- 我们从一组符号(可能是“脚本”)开始,这些符号与任何特定平台都没有关联。例如,“西里尔字母表”在Windows和Linux环境下都是相同的实体。 - 厂商从这些集合中选择成员,通常是一批一批地选择,以形成一个特定于平台的字符集。平台可以为这些字符分配各种代码,例如在Windows上的GDI值(例如ANSI_CHARSET的0和其他代码在此处提到:http://asa.diac24.net/wiki/index.php?title=ASS:fe&printable=yes)。我找不到有关这些集合的太多信息,例如它们是否实际上是编码字符集,还是仅仅是无序和抽象的。 - 从这些集合中,开发出个别代码页,似乎与GDI值具有一对一映射关系。由于这些GDI值似乎代表平台相关的集合,这是否意味着Windows代码页本质上是每个单独集合的编码版本?
我一直在努力将这个想法与早些时候向我展示的链接(我已经丢失了)相协调,该链接显示不同平台上这些GDI字符集和代码页之间存在一对多映射关系。这是准确的吗?这些GDI值是否指向可以开发出不同平台上的不同代码页的集合?
- 每个代码页将抽象字符集的成员映射到一个整数,以表示其在集合中的位置。在上述网页中提到的“简单”代码页的情况下,可以使用更精确的“字符映射”术语来引用它们。这个术语是否值得考虑,还是区别太微妙而无关紧要? - 字体通过将代码点解析为字形来解析代码点,如果字体包含该代码点,则返回成功,否则报告失败。我还读到过,字体可能会针对其不支持的那些代码点返回自己的空白字形。应用程序能否区分这个空白字形和成功解析,即字体是否返回某种错误代码与此空白字形?
以上就是我的困惑所在。任何有关此方面的澄清都将是非常宝贵的。提前感谢您。
2个回答

0

0

你的理解基本正确:

  • 从已知字符数量开始。
  • 选择这些字符的子集(字符集)
  • 将它们映射到位模式(代码页和编码)
  • 通过将字符与字形组合(即使用字体、位模式和将位模式映射到字符的代码页/编码),将它们呈现到输出设备上。

在各个平台上,有类似的代码页。甚至在许多代码页中,值到字符的映射也是相似的。例如,Windows Latin、Mac Roman 和 Unicode 共享前 127 个值的字符。有一些标准化(例如日语的 http://en.wikipedia.org/wiki/Shift_JIS)的代码页,以便机器之间可以互动。

通常情况下,在新开发中,应该使用带有流行编码之一的 Unicode 代码页。UTF8 在大多数现代系统上很受欢迎。UTF16LE 用于以 W 结尾的 Windows 系统调用。


代码页是比位模式更高的级别。将分配数字给字符的级别与物理表示(位)之间的差异更安全。例如,在html/xml中,敥仍然是Unicode编码,但位不是您所期望的。如果您转到Unicode标准(第3章),它们会区分“Unicode编码形式”(即UTF-16)和“Unicode编码方案”(即UTF-16LE/UTF-16BE)。 (http://www.unicode.org/versions/Unicode6.0.0/ch03.pdf#G2212) - Mihai Nita

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接