Javascript 如何以无损方式缩短文本

Javascript 如何以无损方式缩短文本,javascript,node.js,compression,Javascript,Node.js,Compression,我想在我的URL中输入一个文本,例如: 把所有的话都说出来,她微妙的重现是可能的。设置放纵询问自由裁量权昏迷床为何公布。米德尔顿胖了两个满意的补充。于是他继续说,或命令家里的小人物。门上的穷人走了一半。顶着他的头什么 但我希望它更短,例如像这样的字符串: kdghdsvvw564645b7573b4657435 我该怎么做呢?您可以尝试压缩短字符串。您需要连接到C代码或重新实现算法。除了实现或使用压缩算法外,还需要确保URL中的字符是安全的。例如,如果压缩算法像大多数算法一样压缩为二进制,那么这

我想在我的URL中输入一个文本,例如:

把所有的话都说出来,她微妙的重现是可能的。设置放纵询问自由裁量权昏迷床为何公布。米德尔顿胖了两个满意的补充。于是他继续说,或命令家里的小人物。门上的穷人走了一半。顶着他的头什么

但我希望它更短,例如像这样的字符串:

kdghdsvvw564645b7573b4657435


我该怎么做呢?

您可以尝试压缩短字符串。您需要连接到C代码或重新实现算法。

除了实现或使用压缩算法外,还需要确保URL中的字符是安全的。例如,如果压缩算法像大多数算法一样压缩为二进制,那么这将不适用于URL。使用压缩算法后,您需要实现另一种算法,将压缩数据转换为url安全字符串。一些JavaScript压缩库(如)提供了方便的函数,可以直接向URI安全文本进行压缩或解压缩。

答案取决于是否要从URL字符串恢复原始文本

如果要恢复,请首先使用无损方法压缩文本,如zlib库或建议的小文本smaz。然后将压缩的二进制输出转换为URL安全格式。Base64就是这样一种方法。最后一个字符串可能更短或更长,具体取决于文本的可压缩性

如果不想恢复原始文本,只需使用sha1sum散列文本,并在URL字符串中使用其输出。哈希对于两个不同的输入字符串是唯一的。这里有一个例子

~$ cat junk
Put all speaking her delicate recurred possible. Set indulgence inquietude discretion insensible bed why announcing. Middleton fat two satisfied additions. So continued he or commanded household smallness delivered. Door poor on do walk in half. Roof his head the what.
~$ sha1sum junk
e2acae1ae295de73541cd321da268a8d2d48ca7b  junk
~$ gzip junk
~$ base64 junk.gz
H4sICFtXTF8AA2p1bmsAHU9LbgMxCN33FO8Ec4puK1XtCYhhYhQPTA3uqLcvyQbB0/vxuRI0BuIU
eqjd0WWCZWijFExpa05hnB6htyEbviWhxmvcxZrU+rNUcrGANdqUVLdCQ+wlwK3UV/8DmfmyVhEb
PpR5SBZxp0RejqDU2LW4xKxPj6goR3NLtVV4F/is+zjI+Hn7Cuk+GHHUAyYRr96/Un03vHuxz+eo
FHZcNB5VC53GvuHLfUfXKFdiZHlfnXJ7+wdZzrQRDgEAAA==

然后,使用base64-d从URL恢复原始文本

我认为您不是在寻找加密,而是在寻找加密。也别忘了分享你已经尝试过的东西。这能回答你的问题吗?你能用urlshortner吗?如何使用POST而不是GET,并将文本作为正文发送?这将允许更大的数据传输。