我想最终弄清楚如何正确命名 8 位字符的字符串。
什么是UTF-8字符串对我来说很清楚 - 它是一个字符串,其中的每个字符由可变数量的 8 位块(字节)表示。
什么是UTF-16 / UTF-32字符串我也很清楚。
但我不知道如何正确命名 8 位编码,其中前 128 个字符是严格定义的,后续字符会根据使用的代码页而变化。
有些人称它们为ascii,其他人称它们为ansi,或者如果是指特定的编码,则只是CP1251 。
帮助我理解。谷歌只是感到困惑。
我想最终弄清楚如何正确命名 8 位字符的字符串。
什么是UTF-8字符串对我来说很清楚 - 它是一个字符串,其中的每个字符由可变数量的 8 位块(字节)表示。
什么是UTF-16 / UTF-32字符串我也很清楚。
但我不知道如何正确命名 8 位编码,其中前 128 个字符是严格定义的,后续字符会根据使用的代码页而变化。
有些人称它们为ascii,其他人称它们为ansi,或者如果是指特定的编码,则只是CP1251 。
帮助我理解。谷歌只是感到困惑。
ASCII(读aski)是在 99% 的 SO 用户还没有出生的时候(1963 年)使用的第一个编码。编码为7位,即定义了128个字符,全字节的第8位用于奇偶校验,因为当时通道不可靠,假设每个接收到的字节都会被检查。
此外,随着时间的推移,很明显,对于其他语言,您可以使用第 8 位来显示国家字符 - 即使用 256 个字符。这种扩展的 8 位编码以美国标准协会的名义有条件地称为ANSI(读取ansi),其中提出了 8 位编码。据此,针对每种国家语言,提出了自己的表后半部分(128到255个字符)的布局,表的前半部分从0到127是原始的ASCII字符。KOI-8、CP-1251、1252 等 是 ANSI 的各种化身
此外,当涉及到象形文字时,很明显 256 个字符无法容纳并出现UNICODE (读取unicode) - 其中 2 个字节分配给 1 个字符,即 65536 个字符,表格在国家字符之间严格划分,例如,ASCII 表仍然在区间 中
U+0000 до U+007F,而我们的西里尔字母在区间U+A640 до U+A69F中,以此类推。随着狂热的增长,很明显65536个字符也不够用,因为emoji出现了,其他民族字符开始抬头,正直指UNICODE表空间不足,于是提出了UTF-8(读yutief 8 ),其中字符中的字节数有不同的长度,可以是 1 到 4 个字节,即 1,112,064 个字符。
类似的东西。
ASCII(美国信息交换标准代码)——第一个编码选项。
然后是CP866,KOI8-R,Windows 1251,仅此而已。
所以CP1251是ASCII的扩展版本。
ANSI是ASCII的扩展,删除了伪图形并添加了印刷字符。
CP1251是ANSI编码的一个例子。
如果欧拉图显示:
我认为名称“八位”或“单字节编码”是此类事物的完全正确的通用名称。
当然,如果指的是任何特定的代码页/编码,则表示:“KOI8-R”、“CP1251”、“CP1250”、“ISO8859-5”。
如果我没记错的话,ASCII 作为一个标准(它确实是一个标准——美国信息交换标准代码)只定义了前 127 个字符代码。因此,形式上,“i”、“č”、“њ”、“Ḱ”等字符不属于 ASCII。
“ANSI”通常是 CP1251 的专用俄语(原文如此!)术语,因为 事实上,这个缩写代表美国国家标准协会(“OEM”代表原始设备制造商)。