我参加过关于XML的讲座,其中写着“ISO-8859-1是一种Unicode格式”。这对我来说听起来不对,但是当我研究它时,我很难准确理解Unicode是什么。
您可以将ISO-8859-1称为Unicode格式吗?你真的可以称之为Unicode吗?
答案 0 :(得分:9)
ISO 8859-1也称为Latin-1。它不是直接Unicode格式。
但是,它具有唯一的权限,其代码指向0x00 .. 0xFF一对一映射到Unicode代码点U+0000 .. U+00FF。因此,Unicode的前256个代码点被视为1字节无符号整数,映射到ISO 8859-1。
Peregring-lk observes。 U+0000..U+007F和U+0080..U+00FF的Unicode图表表明在位置U + 0000..U + 001F和U + 007F中找到的C0控件来自ISO / IEC 6429:1992并且在位置中找到C1控件U + 0080..U + 9F同样如此。维基百科C0 and C1 controls表明该标准是ISO / IEC 2022。请注意,其中三个C1控件没有正式名称。
一般而言,ISO 8859-1代码集的控制代码点被假定为ISO 6429(或2022)的C0和C1控件。
答案 1 :(得分:7)
ISO-8859-1包含UTF-8 Unicode的子集,它与ASCII基本重叠。
所有ASCII都是UTF-8 Unicode。
代码为7f hex的所有ISO 8859-1(ISO Latin 1)字符都是ASCII兼容的,并且UTF-8在一个字节中兼容。带有变音符号的连字和字符使用多字节Unicode UTF-8表示,并使用Unicode 兼容性代码点。
所有UTF-8单字节字符都包含在ASCII中。
UTF-8还包含多字节序列,其中一些是可兼容的(即可排序的)等价物 - 组成等价物 - 由兼容性代码点表示的字符,其中一些是表示的字符除了ASCII和ISO Latin 1之外的所有其他字符集。
答案 2 :(得分:5)
不,ISO 8859-1不是Unicode字符集,只是因为ISO 8859-1不为所有Unicode字符提供编码,只是其中的一小部分。 “charset”这个词有时会被松散地使用(因此通常最好避免使用),但作为一个技术术语,它意味着字符编码。
放宽定义,以便“Unicode charset”意味着覆盖部分Unicode的编码将毫无意义。然后每个编码都是“Unicode字符集”。
答案 3 :(得分:2)
没有。 ISO / IEC 8859-1比Unicode早。例如,您将找不到€。 Unicode在某种程度上与ISO 8859-1兼容。有关Unicode中字符的编码,请查看UCS / UTF8 / UTF16。
如果您查看代码格式,您可以使用
答案 4 :(得分:1)
这取决于您如何定义“Unicode格式”。
我认为大多数人会认为它是指能够代表Unicode范围内任何代码点的编码(U + 0000 - U + 10FFFF)。
在这种情况下,不,ISO 8859-1不是Unicode格式。
但是,其他一些定义可能是“作为Unicode字符集子集的字符集”,或“可以认为包含Unicode数据的编码(不一定是任意Unicode数据)”。 ISO 8859-1符合这两个定义。
Unicode是很多东西。它包含一个字符集,其中“字符”被赋予代码点值。它定义字符的属性,并提供字符及其属性的数据库。它定义了许多使用Unicode文本数据执行各种操作的算法,例如比较字符串的方法,将字符串划分为字形集群,单词等。它定义了一些特殊编码,可以编码任何Unicode代码点并具有一些其他有用的属性。它定义了Unicode代码点和传统字符集的代码点之间的映射。
您可以在这里找到更完整的答案:Unicode.org