【问题标题】:How can I shorten a string and later get back the original contents?如何缩短字符串并稍后取回原始内容?
【发布时间】:2009-09-17 18:33:33
【问题描述】:

我有一个很长的字符串,我需要传入一个 URL,比如 10,000 个字符。任何人都知道将其缩短到 2,000 个字符以下的好方法,然后在服务器上以某种方式获取原始字符?

这是 Objective-C 与 Ruby 的对话,但这无关紧要。

【问题讨论】:

  • 我不确定发送 10k 字符 URL 的优点,但如果有办法将 10k 字符转换为

标签: string url


【解决方案1】:

你能发布数据吗? 如果您使用 GET,则 url 的最大长度约为 4000 个字符。如果你发布它,你没有任何限制(除了超时内存等)

This article 谈论从objective-c 发帖

【讨论】:

  • +1 表示不回答问题,而是为(可能的)实际问题提供解决方案
  • 哇,我今天早上有点慢。当然。感谢您的快速回复。所以这触发了一个有趣的思考过程。在不使用数据库的情况下,有人知道可以缩小字符串然后将其取回的双向函数吗?
  • 如果您执行 POST,您始终可以启用 HTTP 压缩。这将透明地压缩整个连接,因此它发生得更快。
【解决方案2】:

您确定必须将其作为 URL 传递吗?也许 POST-Data 或 Session 会更合适?否则,您可以将字符串存储在数据库中,并将插入记录的键作为 URL 参数返回。如果这是一个安全问题(如果它是整数键,人们可以更改数字),您可以创建一个 UUID 作为键。

【讨论】:

    【解决方案3】:

    将其存储在数据库中,然后只需在 url 中传递字符串的 id。

    【讨论】:

      【解决方案4】:

      您可以尝试通过Base64 运行它。如果保证字符串只包含可能字符的子集——例如,[a-zA-Z0-9]——则可以通过将它们转换为唯一的序数并使用更高的基本编码来进一步缩短它。

      但使用 POST 可能会更容易。

      【讨论】:

        【解决方案5】:

        好吧,压缩它并Base64 编码结果。如果字符串具有非常特定的格式,自定义编码甚至可以产生更好的压缩。可以举个例子吗?

        【讨论】:

        • @Daniel:根据数据的可压缩性,他最终可能会得到比他开始时更长的字符串。此外,也不能保证他将获得完成所描述的任务所需的 5:1 压缩。
        • 这就是为什么我要一个例子... ;)
        【解决方案6】:

        我会将此信息持久化到数据库(或任何其他持久性源),然后在 URL 中传递对它的引用。

        源和目标都需要访问数据库,但这在大多数情况下都不是问题。

        【讨论】:

          猜你喜欢
          • 2013-06-10
          • 2020-10-30
          • 2014-11-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-17
          • 2017-11-11
          相关资源
          最近更新 更多