是否有一种编码可以包含比字节更多的字符?

问题描述 投票:0回答:1

我前几天写了类似的代码(伪代码):

let numBytes = file.size()
let string = String::reserve(numChars=numBytes)
file.read(&string, encoding='auto')

但后来我想,是否有任何实际的编码,我保留的字符量是不够的?对于我熟悉的编码,它从

numChars <= numBytes
开始就一直有效,例如:

  • 在 ASCII 或 ISO 8859 中,每个字符由一个字节表示
  • 在UTF-32中,每个字符由4个字节表示
  • 在 UTF-8 中,每个字符使用 1 到 4 个字节

我可以很容易地想出一个虚构的编码,但事实并非如此,但是有像这样的真实编码吗?

unicode encoding character-encoding
1个回答
0
投票

理论上是的,但这主要取决于您对字符编码的定义。这样的编码需要用平均少于 8 位来表示每个字符。这确实将此类可能的编码限制为少于 64 个字符。

虽然更通常被认为是二进制到文本,但换个方式 Base64 可以被认为是一种字符编码,每个字符只需要 6 位,因此允许的字符多于字节。

我认为压缩二进制编码的十进制是一种字符编码。由于其目的是专门表示以 10 为基数的数字而不是原始二进制数,因此该数字很容易被视为字符(类似地,ASCII 也有数字字符)。每个 BCD 数字都是 4 位,因此我们将两个字符转换为一个字节。

© www.soinside.com 2019 - 2024. All rights reserved.