2009-08-14 47 views

回答

10

看起來好像只有73個字符可以在URL中非轉義使用。如果是這種情況,你可以將128位數字轉換爲73位數字,並有21個字符的URL。

如果您可以找到85個合法字符,則可以查看20個字符的URL。

+0

那麼我們在URL上保存9個字符?我發現讀取/背誦十六進制比看起來更容易,比起00amyWGct0y_ze4lIsj2Mw – hometoast 2009-08-14 17:36:42

+0

@hometoast:是的,好吧,這似乎不是OP的限制。 ;) – retracile 2009-08-14 18:07:06

+1

我用一個Ascii85編碼將一個Guid寫入20個ASCII字符的數據庫列。我發佈了C#代碼,以防它有用。對於URL編碼,特定的字符集可能會有所不同,但您可以選擇適合您的應用程序的任何字符。它可在這裏:http://stackoverflow.com/questions/2827627/what-is-the-most-efficient-way-to-encode-an-arbitrary-guid-into-readable-ascii-3/4211088#4211088 – sheikhjabootie 2010-11-18 02:28:50

5

甲GUID看起來像這樣c9a646d3-9c61-4cb7-BFCD-ee2522c8f633 - 這是32位十六進制數字,每一個編碼4位,所以在總

128位的base64編碼使用每符號6位,這是很容易使用URL安全字符實現22字符編碼的字符串。正如其他人已經注意到的,你可以使用73個URL安全符號並編碼爲73位數字來給出21個字符。

+0

你是如何從URL安全字符中取出6位的? – 2009-08-14 16:55:04

+0

沒有127個URL安全字符,所以假定6位是最大的。 – 2009-08-14 16:56:12

+0

6位是base64,它是原始鏈接去的地方。如果你可以得到超過64個字符,比如說85,你可以將128位數字轉換爲85,最多可以減少20個字符。它不會像base64那麼好。 – retracile 2009-08-14 16:57:16