【问题标题】:Is ISO-8859-1 a Unicode charset?ISO-8859-1 是 Unicode 字符集吗?
【发布时间】:2012-09-29 11:26:55
【问题描述】:

我一直在参加关于 XML 的讲座,其中写着“ISO-8859-1 是一种 Unicode 格式”。这听起来对我来说是错误的,但是当我研究它时,我很难准确地理解 Unicode 是什么。

您可以将 ISO-8859-1 称为 Unicode 格式吗?什么叫 Unicode?​​p>

【问题讨论】:

    标签: unicode character-encoding iso-8859-1


    【解决方案1】:

    ISO 8859-1 不是 Unicode

    ISO 8859-1 也称为 Latin-1。它不是直接的Unicode 格式。

    但是,它确实具有其代码点 0x00 .. 0xFF 一对一映射到 Unicode 代码点 U+0000 .. U+00FF 的独特特权。因此,Unicode 的前 256 个代码点,被视为 1 字节无符号整数,映射到 ISO 8859-1。


    控制字符

    Peregring-lkobserves 表示 ISO 8859-1 没有定义控制代码。 U+0000..U+007FU+0080..U+00FF 的 Unicode 图表表明,位于 U+0000..U+001F 和 U+007F 位置的 C0 控件来自 ISO/IEC 6429:1992,而位于 U+0080 位置的 C1 控件。 .U+9F 同样。 C0 and C1 controls 上的维基百科建议该标准改为 ISO/IEC 2022。请注意,其中三个 C1 控件没有正式名称。

    一般来说,ISO 8859-1 代码集的控制代码点假定为 ISO 6429(或 2022)中的 C0 和 C1 控制。

    【讨论】:

    • 因此,ISO-8859-1 很容易在byte 和(宽)char 之间转换的代码中“意外”使用,而不是执行正确的字符集转换。跨度>
    • 错了。 ISO-8859-1 不包含 Unicode 中 0x00 - 0xFF 范围内的任何控制字符。
    【解决方案2】:

    ISO-8859-1 包含 UTF-8 Unicode 的一个子集,它与 ASCII 基本重叠。

    所有 ASCII 都是 UTF-8 Unicode。

    代码 7f 十六进制以下的所有 ISO 8859-1(ISO 拉丁语 1)字符在一个字节中都兼容 ASCII 和 UTF-8。带有变音符号的连字和字符使用多字节 Unicode UTF-8 表示,并使用 Unicode兼容性代码点

    所有 UTF-8 单字节字符都包含在 ASCII 中。

    UTF-8 还包含多字节序列,其中一些是可整理(即可排序)等价物 - composed 等价物 - 由兼容性代码点表示的字符,其中一些是表示的字符由除 ASCII 和 ISO Latin 1 之外的所有其他字符集。

    【讨论】:

      【解决方案3】:

      不,ISO 8859-1 不是 Unicode 字符集,仅仅是因为 ISO 8859-1 没有为所有 Unicode 字符提供编码,只是其中的一小部分。 “字符集”这个词有时使用松散(因此通常最好避免使用),但作为一个技术术语,它表示字符编码。

      放宽定义,使“Unicode 字符集”意味着涵盖部分 Unicode 的编码将毫无意义。那么每个编码都是一个“Unicode 字符集”。

      【讨论】:

        【解决方案4】:

        没有。 ISO/IEC 8859-1 早于 Unicode。例如,您不会在其中找到 €。 Unicode 在某种程度上与 ISO 8859-1 兼容。对于 Unicode 中的字符编码,请查看 UCS / UTF8 / UTF16。

        如果您查看代码格式,您会有类似的东西

        • 抽象字母 - 您正在使用的字母
        • 代码表 - 以某种形式输入字母(如字母顺序)
        • 代码格式 - 说明代码表中的哪个位置是哪个字母,(即UTF8或UTF16编码)
        • 代码架构 - 如果您使用更多词来访问代码位置,它们的顺序是什么? (UTF16 中的大端、小端) [转向指令的字符编码(例如XML中的

        【讨论】:

        • ISO/IEC 8859-1 没有 €,但 8859-15 有。
        【解决方案5】:

        这取决于您如何定义“Unicode 格式”。

        我认为大多数人会认为它是一种能够表示 Unicode 范围 (U+0000 - U+10FFFF) 内任何代码点的编码。

        在这种情况下,不,ISO 8859-1 不是 Unicode 格式。

        但是,其他一些定义可能是“作为 Unicode 字符集子集的字符集”或“可以被认为包含 Unicode 数据(不一定是任意 Unicode 数据)的编码。” ISO 8859-1 符合这两个定义。

        Unicode 有很多东西。它包含一个字符集,其中“字符”被分配了代码点值。它定义字符的属性并提供字符及其属性的数据库。它定义了许多算法,用于对 Unicode 文本数据进行各种处理,例如比较字符串的方法、将字符串划分为字素簇、单词等。它定义了一些特殊的编码,可以对任何 Unicode 代码点进行编码并具有一些其他有用的属性。它定义了 Unicode 代码点和遗留字符集的代码点之间的映射。

        在这里您可以找到更完整的答案:Unicode.org

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-01-19
          • 2016-11-26
          • 2012-09-01
          • 2015-08-25
          • 1970-01-01
          • 1970-01-01
          • 2020-01-13
          • 1970-01-01
          相关资源
          最近更新 更多