将文本压缩为字母和数字,不包含特殊字符



我想写一个tinyurl克隆,并采用如下文本:

https://myfunwebsite.com/coolthing

并将该字符串缩短为:

asdf9SDFs23vbk

我有以下代码:

const buffer = zlib.deflateSync(myString);
const compressed = buffer.toString('ascii');

但是问题是它创建了一个像x?K())0RWOHMII/O/JIQKL??O???这样的字符串,这对于放入url参数是不好的。我想要的结果字符串只有字母和数字,我怎么做呢?

不。即使您不必担心URL中的任意字节,您也无法压缩像"https://myfunwebsite.com/coolthing"这样的短字符串。这34个字符将被最好的压缩器将扩展为50到100个字节。无损压缩机需要更多的数据才能运行。

然后如果你把它编码成url安全的字符,你已经把它扩展了25%到33%,所以现在你从原来的34个字符增加到60到140个字符。

这就是为什么TinyURL不像你想象的那样工作。它不会压缩。它在服务器上存储完整的URL,然后给你一个代码,它可以找到存储的URL并播放给你。

最新更新