【发布时间】:2016-10-18 11:21:08
【问题描述】:
我有一个 JavaScript 字符串,其中包含 charCode 大于 255 的字符。
我希望能够将该字符串编码/解码为另一个字符串,其所有 charCode 小于或等于 255。
对字符没有限制(例如:可以是不可打印的)。
我想要一个尽可能快的解决方案,并且生成尽可能小的字符串。
它也必须适用于任何 UTF-8 字符。
我发现encodeURI 正是这样做的,但它似乎占用了很多空间。
encodeURI('ĉ') === "%C4%89" // 6 bytes...
有什么比encodeURI更好的吗?
【问题讨论】:
-
除了没有大于255的charCode之外,您对编码还有什么要求吗?是否允许有引号、空格、不可打印字符、NUL字符?
-
无其他要求。数据以二进制形式发送。
-
快速和尽可能小在某种程度上是相互排斥的。您可以尝试对字符串进行 LZW 压缩。您要压缩的字符串有多大,为什么需要压缩它?例如。如果是 GET 请求,也许你可以使用 POST 请求,这样可以非常有效地传输字节。
-
您可以将每个字符 charcode 转换为 base 255,然后用一个未使用的字符分隔它们。
-
@AndrewMorton 我正在使用将对象编码为二进制缓冲区的压缩库。该库假定对象中字符串的每个字符都适合 1 个字节。
标签: javascript string utf-8