unicode - 是否有一些标准编码可以将二进制数据编码为每个数据字节一个 UTF-8 可表示的 unicode 字符序列?
问题描述
这与以下问题有关:
如果我们想将二进制数据表示为可打印字符,我们可以使用 ASCII 集中的一组 16 个可打印“数字”对其进行十六进制编码(每个数据字节产生 2 个数字),或者我们可以使用一组 64 个可打印字符进行 base64 编码ASCII 集(每字节数据产生大约 1.33 个字符)
没有使用 ASCII 字符的 base128 编码,因为 ASCII 仅包含 95 个可打印字符(尽管 Ascii85 使用 85 个字符https://en.wikipedia.org/wiki/Ascii85)
我想知道是否有任何标准化的表示方法使用 256 个可打印的 unicode 字符,这些字符可以用 UTF-8 表示,有效地产生每字节数据有 1 个可打印字符的编码?
解决方案
没有这样的标准编码。但它可以很容易地创建。选择 256 个随机 Unicode 字符并使用它们对字节 0 到 255 进行编码。
某些字符需要 2 个或更多字节才能以 UTF-8 编码,因为只有 94 个可打印字符具有 1 个字节编码。
使用这种方法可以实现的最紧凑的编码是采用这 94 个字符(U+0021 到 U+007E)并添加需要 2 个字节进行编码的 162 个可打印字符,例如 U+00A1 到 U+0142。它导致每个输入字节需要大约 1.63 个输出字节的编码。所以它的效率不如 Base64。这可能是它尚未标准化的原因。
推荐阅读
- swift - 如何以编程方式定位 scene.scn 中的对象?
- r - 查找泛型函数的麻烦方法
- python-2.7 - 如何在for循环的每次迭代中获取字典中的所有产品
- sikuli - 应用程序打开在 sikuli 中打开多个窗口
- c# - 为什么不尽可能使用“in”作为方法参数?
- python-3.x - 使用networkx绘制金融网络的精度矩阵时出错
- dns - DNS间歇性故障,包括internet、intranet和docker-compose网络
- java - 如何通过 ELB 将 HTTPS 流量路由到运行 Java JHipster webApp 的 EC2 容器
- wordpress - 链接产品woocommerce中的自定义字段
- java - 无法将 json 转换为 java pojo 类?