我正在研究代码页,并且遇到了许多相互矛盾的术语用法,即使在不同的维基百科条目中也是如此。我无法找到从头到尾说明整个字符处理过程的信息来源。精通这一领域的人是否可以提出以下信息不准确或不正确的方法:
根据我的理解,字符表示的过程:
我们从与任何特定平台无关的符号集(不确定此处的正确术语,可能是'脚本')开始。例如,“西里尔字母”被理解为在Windows的上下文中指代与Linux中相同的实体。
这些集合的成员通常由供应商选择,以形成特定于平台的字符集。平台可以在Windows上分配这些各种代码,例如GDI值(例如,0表示ANSI_CHARSET,以及此处提到的其他代码:http://asa.diac24.net/wiki/index.php?title=ASS:fe&printable=yes)。我找不到关于这些集合的大量信息,例如它们是否实际上是编码字符集,或者它们是否只是无序和抽象的。
从这些集合中,开发出的单个代码页似乎与GDI值具有一对一的映射。由于这些GDI值似乎代表与平台相关的集合,这是否意味着Windows代码页本质上是每个集合的编码版本?
我一直无法将这个想法与之前显示给我的链接(我已经丢失)进行协调,这些链接显示了这些GDI字符集与跨不同平台的代码页之间的一对多映射。这是否准确,这些GDI值是否指向可以开发不同平台的不同代码页的集合?
每个代码页将抽象字符集的成员映射到整数以表示其在集合中的位置。在上述网页上提到的“更简单”代码页的情况下,可以使用更精确的“字符映射”术语来引用这些代码页。这个术语值得考虑还是区别太微妙和不重要?
如果字体包含该代码点的字形,则字体会将代码点解析为字形,否则会报告失败。我还读过一个字体可能会为那些它不支持的代码点返回自己的空白字形。应用程序是否可以区分此空白字形和成功解析,即。字体是否使用此空白字形返回错误代码?
我认为这是我困惑的程度。在这方面的任何澄清都是非常宝贵的。提前谢谢。
答案 0 :(得分:0)
你基本上是正确的:
跨平台,有类似的代码页。甚至在许多代码页中,也存在类似于字符的值的映射。例如,Windows Latin,Mac Roman和unicode共享前127个值的字符。有一些标准化(例如日语http://en.wikipedia.org/wiki/Shift_JIS)的代码页,以便机器可以进行交互。
通常对于新开发,您应该使用带有一种流行编码的unicode代码页。 UTF8在大多数现代系统中很流行。 UTF16LE用于以W。结尾的Windows系统调用。
答案 1 :(得分:0)
这可能是一个很好的匹配:http://mihai-nita.net/2006/08/06/basic-lingo/