首页 > 解决方案 > 将 ASCII 符号编码为 UTF-8 表示

问题描述

我有一个我知道肯定只有ASCII字母的字符串。 JS默认情况下将字符串视为字符串UTF-8,因此这意味着每个字符最多占用 4 个字节,即 ASCII 的 4 倍。

我正在尝试通过具有and函数来压缩/节省空间/获得最短的字符串。encodedecode

我想过ASCII在一个UTF-8字符串上表示 4 个字符并通过它实现我的目标,有没有这样的东西? UTS-8 压缩为 ASCII

如果不是,那么压缩ASCII字符串的最佳方法是什么,以便通过编码和解码得到相同的字符串?

标签: javascriptencodingutf-8compressionascii

解决方案


实际上,JavaScript 以 UTF-16 编码程序字符串,它使用 2 个八位字节(16 位)用于 BMP(基本多语言平面)中的 Unicode 字符,并使用 4 个八位字节(32 位)用于其之外的字符。所以至少在内部,ASCII 字符使用 2 个字节。

有空间将两个 ASCII 字符打包成 16 位,因为它们每个只使用 7 位。2**16此外,由于和2**14is之间的差异49152,以及 UTF-16 中代理对使用的编码数量是(据称2048,您应该能够设计一种编码方案来避免代理使用的代码点范围。

您还可以使用 8 位类型的数组来保存 ASCII 字符,同时避免自定义压缩算法的复杂性。

如今,压缩 7 位 ASCII 以在 JavaScript 中使用的目的在很大程度上(完全?)是学术性的,而不是需要的东西。请注意,由于 UTF-8 的设计,将 7 位 ASCII 内容编码为 UTF-8(用于传输或文件编码)仅使用一个字节用于 ASCII 字符。


推荐阅读