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代码页本质上是每个集合的编码版本
- 每个代码页将抽象字符集的一个成员映射到一个整数上,以表示其在集合中的位置。对于上述网页中提到的“更简单”代码页,可以使用更精确的“字符映射”术语来指代这些代码页。这个术语值得考虑吗,还是区别太微妙和不重要了
- 如果字体包含用于代码点的字形,则字体将代码点解析为字形,否则会报告失败。我还读到,字体可能会返回它自己的空白字形,用于它不支持的代码点。应用程序能否区分此空白图示符和成功解析,即字体是否返回与此空白图示符排序的错误代码
我相信这就是我困惑的程度。这方面的任何澄清都是非常宝贵的。提前感谢。你基本上是对的:
- 从已知字符数开始
- 选择此字符的子集(字符集)
- 将这些映射到位模式(代码页和编码)
- 通过将字符与字形组合(即使用字体、位模式和将位模式映射到字符的代码页/编码),将这些字符呈现到输出设备
一般来说,对于新的开发,您应该使用带有流行编码之一的unicode代码页。UTF8在大多数现代系统上都很流行。UTF16LE用于以W结尾的Windows系统调用。这可能是一个很好的匹配:代码页比位模式高一级。更安全的做法是在为字符分配数字的级别和物理表示(位)之间进行区分。例如html/xml敥;仍然是Unicode编码,但位不是您所期望的。如果您使用Unicode标准(第3章),它们将区分“Unicode编码形式”(即UTF-16)和“Unicode编码方案”(即UTF-16LE/UTF-16BE)。()