Encoding 什么';编码和字符集的区别是什么?

Encoding 什么';编码和字符集的区别是什么?,encoding,character-encoding,Encoding,Character Encoding,我对文本编码和字符集感到困惑。由于很多原因,我不得不这样做 在我接下来的工作中学习非Unicode、非UTF8的内容 我在电子邮件标题中找到了“charset”一词,就像在“ISO-2022-JP”中一样,但是没有 文本编辑器中的这种编码。(我环顾了一下不同的文本编辑器。) 文本编码和字符集有什么区别?我会很感激的 如果您能给我看一些用例示例的话。每个编码都有一个与之关联的特定字符集,但是对于一个给定的字符集可以有多个编码。字符集就是它听起来的样子,一组字符。有大量的字符集,包括许多用于特定脚本

我对文本编码和字符集感到困惑。由于很多原因,我不得不这样做 在我接下来的工作中学习非Unicode、非UTF8的内容

我在电子邮件标题中找到了“charset”一词,就像在“ISO-2022-JP”中一样,但是没有 文本编辑器中的这种编码。(我环顾了一下不同的文本编辑器。)

文本编码和字符集有什么区别?我会很感激的
如果您能给我看一些用例示例的话。

每个编码都有一个与之关联的特定字符集,但是对于一个给定的字符集可以有多个编码。字符集就是它听起来的样子,一组字符。有大量的字符集,包括许多用于特定脚本或语言的字符集

然而,我们在向Unicode过渡的过程中进展顺利,Unicode包括一个能够表示世界上几乎所有脚本的字符集。但是,Unicode有多种编码。编码是一种将字符串映射到字节字符串的方法。Unicode编码的示例包括和。对于特定的应用程序或机器体系结构,每种方法都有其优点。

基本上:

  • 字符集是可以使用的字符集
  • 编码是将这些字符存储到内存中的方式

  • 一个字符集或字符集,就是一组字符(无序的集合)。编码字符集为曲目中的每个字符分配一个整数(“码点”)。编码是将代码点明确地表示为字节流的一种方式。

    字符集只是一个集合;它要么包含,例如,欧元符号,要么不包含。就这些


    编码是从字符集到整数集的双射映射。如果它支持欧元符号,它必须为该字符指定一个特定的整数,而不是其他字符。

    除了其他答案之外,我认为这篇文章是一本不错的读物

    这篇文章的标题是Joel Spolsky撰写的“每个软件开发人员绝对、绝对必须了解Unicode和字符集(没有借口!)。这篇文章是2003年写的,但(不幸的是)内容仍然有效…

    谷歌搜索。

    差别似乎很微妙。术语字符集实际上不适用于Unicode。Unicode经历了一系列的抽象。 抽象字符->代码点->将代码点编码为字节

    字符集实际上跳过这一步,直接从字符跳到字节。 字节序列字符序列

    总之,, 编码:代码点->字节
    字符集:字符->字节

    字符编码包括:

  • 支持的字符集
  • 字符和整数之间的映射(“代码点”)
  • 如何将代码点编码为一系列“代码单元”(例如,UTF-16的16位单元)
  • 如何将代码单元编码为字节(例如,大端或小端)
  • 步骤#1本身就是一个“字符集”或抽象的“字符集”;#1+#2=一个“编码字符集”

    但在Unicode普及之前,每个人(东亚人除外)都使用单字节编码,第3步和第4步都很简单(代码点=代码单位=字节)。因此,旧的协议并没有明确区分“字符编码”和“编码字符集”。较旧的协议使用
    字符集
    ,当它们真正意味着编码时。

    为今后访问的人提供了更多信息,希望这会有所帮助


    字符集 每种语言都有字符,这些字符的集合构成了该语言的“字符集”。对字符进行编码后,将为其分配一个唯一标识符或一个称为代码点的数字。在计算机中,这些代码点将由一个或多个字节表示

    字符集示例:ASCII(涵盖所有英文字符)、ISO/IEC 646、Unicode(涵盖世界上所有现存语言的字符)

    编码字符集 编码字符集是为每个字符分配唯一编号的集合。该唯一编号称为“代码点”。
    编码字符集有时称为代码页

    编码 编码是一种将代码点映射到某些字节的机制,以便使用相同的编码方案在不同的系统中统一读写字符

    编码示例:ASCII、Unicode编码方案,如UTF-8、UTF-16、UTF-32

    阐述上述3个概念
    • 考虑一下这个角色的角色क' 在Devanagari中,字符集有一个2325的十进制码点,当使用UTF-16编码时,它将由两个字节(
      09 15
      )表示
    • 在“ISO-8859-1”编码方案中,“ü”(这只是拉丁字符集中的一个字符)表示为
      FC
      的十六进制值,而在“UTF-8”中表示为
      C3 BC
      ,在UTF-16中表示为
      FE FF 00 FC
    • 不同的编码方案可以使用相同的代码点来表示不同的字符,例如在“ISO-8859-1”(也称为拉丁语1)中,字母“é”的十进制代码点值为233。然而,在ISO 8859-5中,相同的代码点表示西里尔字母“収”
    • 另一方面,Unicode字符集中的单个代码点实际上可以映射到不同的字节序列,这取决于文档使用的编码。德瓦纳加里的性格क, 使用UTF-16编码(
      09 15
      )时,代码点2325(十六进制表示法为915)将由两个字节表示,UTF-8(
      E0 A4 95
      )将由三个字节表示,UTF-32(
      00 09 15
      )将由四个字节表示
      • 在我看来,“字符集”一词应该是
        Extract of ASCII Table 60-65
        ╔══════╦══════════════╗
        ║ Byte ║  Character   ║
        ╠══════╬══════════════║
        ║  60  ║      <       ║
        ║  61  ║      =       ║
        ║  62  ║      >       ║
        ║  63  ║      ?       ║
        ║  64  ║      @       ║
        ║  65  ║      A       ║
        ╚══════╩══════════════╝