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 值是否指向可以开发跨不同平台的不同代码页的集合?

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

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

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

4

2 回答 2

0

你基本上是正确的:

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

跨平台,有类似的代码页。即使在许多代码页中,也存在类似的值到字符的映射。例如,Windows Latin、Mac Roman 和 unicode 共享前 127 个值的字符。代码页有一些标准化(例如http://en.wikipedia.org/wiki/Shift_JIS用于日语),以便机器可以交互。

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

于 2011-04-23T16:54:31.097 回答
0

这可能是一个很好的匹配: http: //mihai-nita.net/2006/08/06/basic-lingo/

于 2011-05-28T09:25:05.853 回答