首页 > 解决方案 > 如何以无损方式缩短文本

问题描述

我想在我的 URL 中输入一段文字,例如:

把所有讲她的细腻再现的可能。设置放纵不羁谨慎不知所措的床为什么宣布。米德尔顿胖了两个满意的补充。因此,他继续或命令家庭小事交付。门差就走一半。顶着什么。

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

kdghdsvvw564645b7573b4657435

我该怎么做?

标签: javascriptnode.jscompression

解决方案


答案取决于您是否要从 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 中恢复原始文本


推荐阅读