我有一個非常長的字符串,我需要傳遞一個URL,例如10,000個字符。任何人都知道一個很好的方法來縮短到2000個字符,然後在服務器上以某種方式獲得原始回來?如何縮短一個字符串並在以後找回原始內容?
這是Objective-C與Ruby交談,但這應該不重要。
我有一個非常長的字符串,我需要傳遞一個URL,例如10,000個字符。任何人都知道一個很好的方法來縮短到2000個字符,然後在服務器上以某種方式獲得原始回來?如何縮短一個字符串並在以後找回原始內容?
這是Objective-C與Ruby交談,但這應該不重要。
你可以發佈數據嗎? 如果使用GET,URL的最大長度大約爲4000個字符。如果您發佈它,你有沒有限制(除超時內存等)
This article有關從Objective-C的做一個講座後
+1不回答問題,而是給出(可能)真實問題的解決方案 – 2009-09-17 18:37:40
哇,今天早上我有點慢。當然。感謝您的快速回復。 所以這引發了一個有趣的思考過程。沒有使用數據庫,有沒有人知道一個雙向函數,可以收縮一個字符串,然後把它拿回來? – Nader 2009-09-17 18:46:16
如果您執行POST,則始終可以啓用HTTP壓縮。這將透明地壓縮整個連接,所以它發生得更快。 – 2009-09-17 18:50:34
你確定你必須在把它作爲一個URL?也許POST數據或會話會更合適?否則可以將字符串存儲在數據庫中,並將插入的記錄的鍵作爲URL參數返回。如果這是一個安全問題(因爲人們可以更改數字,如果它是一個整數鍵),您可以創建一個UUID作爲鍵。
你可以嘗試運行它通過Base64。如果字符串保證只包含可能字符的一個子集 - 例如[a-zA-Z0-9] - 通過將這些字符轉換爲唯一序號並使用更高的基本編碼,可以將其縮短更多。
但是使用POST可能會更容易。
將其存儲在數據庫中,然後只傳遞url中字符串的id。
好吧,壓縮它,並Base64編碼結果。如果字符串具有非常特定的格式,則自定義編碼甚至可以產生更好的壓縮。你能給個例子嗎?
@丹尼爾:根據數據的可壓縮性,他最終可能會以比他開始時更長的字符串。也不能保證他將得到他所需要的5:1壓縮來完成所描述的任務。 – 2009-09-17 18:41:38
這就是爲什麼我要求一個例子...;) – 2009-09-17 18:46:55
我會將這些信息保存到數據庫(或任何其他持久性源),然後在URL中傳遞對它的引用。
源和目標都需要訪問數據庫,但這在大多數情況下不是問題。
我不確定發送一個10k字符的URL的好處,但如果有一種方法可以將10k字符轉換爲<2k,並且可以轉換回原始10k我也想知道。 – 2009-09-17 18:38:26