kha*_*vah 31 unicode character-encoding special-characters
当我将“a”放入文本文件时,它会变成 2 个字节,但是当我放入“?”时,它是一个来自亚美尼亚字母表的字母,它会变成 3 个字节。
计算机的字母表有什么区别?
为什么英语占用更少的空间?
Dok*_*ard 41
最早开发用于主流计算机的编码方案之一是ASCII(美国信息交换标准代码)标准。它是在 1960 年代在美国开发的。
英语字母表使用部分拉丁字母表(例如,英语中很少有带重音的单词)。该字母表中有 26 个单独的字母,不考虑大小写。并且在任何假装对英语字母表进行编码的方案中也必须存在单独的数字和标点符号。
1960 年代也是计算机没有我们现在拥有的内存或磁盘空间量的时期。ASCII 被开发为适用于所有美国计算机的功能字母表的标准表示。当时,将每个 ASCII 字符设为 8 位(1 个字节)长的决定是由于当时的技术细节(维基百科文章提到穿孔胶带一次在一个位置上保持 8 位的事实)。事实上,原始的 ASCII 方案可以使用 7 位传输,其中 8 位可以用于奇偶校验。后来的发展扩展了最初的 ASCII 方案,包括几个重音、数学和终端字符。
随着最近全世界计算机使用量的增加,越来越多不同语言的人可以使用计算机。这意味着,对于每种语言,必须独立于其他方案开发新的编码方案,如果从不同的语言终端读取,则会发生冲突。
Unicode通过将所有可能的有意义的字符合并为一个抽象字符集来解决不同终端的存在。
UTF-8是一种编码 Unicode 字符集的方法。它是一种宽度可变的编码(例如,不同的字符可以有不同的大小),它的设计目的是为了与以前的 ASCII 方案向后兼容。因此,ASCII 字符集将保持为一个字节大,而任何其他字符则为两个或更多字节大。UTF-16 是另一种编码 Unicode 字符集的方法。与 UTF-8 相比,字符被编码为一组一个或两个 16 位代码单元。
正如评论中所述,“a”字符占用一个字节,而“?” 占用两个字节,表示UTF-8编码。您问题中的额外字节是由于末尾存在换行符(OP 发现了这一点)。
| 归档时间: |
|
| 查看次数: |
10839 次 |
| 最近记录: |