1

I have a database of entities that I want to display in a web ui. I want a short, alphanumeric string that I can generate from the entity's key. I came to the conclusion that base32 was a good solution (particularly because I wanted the keys to be case-insensitive so they could be read verbally, etc). Is there anything shorter or more space efficient than the below?

import base64
def b32urlencode(x):
    return base64.b32encode(x).strip('=').lower()

def b32urldecode(x):
    return base64.b32decode(x + ('=' * (8 - (len(x) % 8))))
4

1 回答 1

1

答案取决于您希望 URL 的可读性和可键入性。

Base64使用大小写字母加-、、、+和。您的 Web 服务器或应用程序可能区分大小写,也可能不区分大小写,具体取决于您如何配置它们。如果您希望您的用户能够键入 URL(而不仅仅是单击它们),那么即使服务器和应用程序允许它们,大写和小写字母也可能是一个问题。_/=

根据上述情况,考虑基数 62(az、AZ 和 0-9)或 36(az 不区分大小写和 0-9)。

于 2013-08-28T17:31:15.240 回答