Language agnostic URL安全UUID的最小字符数
理想情况下,我想要像Language agnostic URL安全UUID的最小字符数,language-agnostic,uuid,Language Agnostic,Uuid,理想情况下,我想要像example.com/resources/äFg4öNΓё5这样的东西,即可见的字符的最小数量,更不用说它们在通过HTTP传输之前必须进行百分比编码 你能告诉我一个方案,它能有效地将128b UUID编码成最少数量的可见字符,而不会产生破坏URL的字符吗?Base-64适合这样做 {098ef7bc-a96c-43a9-927a-912fc7471ba2} 可以被编码为 vPeOCWypqUOSepEvx0cbog 通常结尾处的等号可以去掉,因为它们总是使字符串长度为4
example.com/resources/äFg4öNΓё5
这样的东西,即可见的字符的最小数量,更不用说它们在通过HTTP传输之前必须进行百分比编码
你能告诉我一个方案,它能有效地将128b UUID编码成最少数量的可见字符,而不会产生破坏URL的字符吗?Base-64适合这样做
{098ef7bc-a96c-43a9-927a-912fc7471ba2}
可以被编码为
vPeOCWypqUOSepEvx0cbog
通常结尾处的等号可以去掉,因为它们总是使字符串长度为4的倍数。您可以使用一些安全字符,而不是+
和/
。您可以从中选择两个:-
~
更多信息:
- (爪哇)
- (C#)
- (C#)
import base64
import uuid
# get a UUID - URL safe, Base64
def get_a_Uuid():
r_uuid = base64.urlsafe_b64encode(uuid.uuid4().bytes)
return r_uuid.replace('=', '')
* 这确实遵循标准:
base64。urlsafe\u b64encode
遵循RFC 3548和4648,请参阅。允许从已知长度的base64编码数据中剥离==
,请参阅。在中指定UUID/GUID;声明“UUID格式为16个八位字节”。base64
-function对这16个八位字节进行编码。
国际角色仍然有点像一罐蠕虫;它可能总是在浏览器中工作,但如果您在不同的应用程序中进行复制粘贴,例如邮件客户端、即时通讯器,或者最脆弱的情况下,SMS,它们将崩溃。答案中建议的Base64仍然是最好的方法,除非您做出危险的假设,即用户不会在同一web浏览器之外使用这些链接。不适用于python3,您应该使用:
return Base64.urlsafe\u b64encode(uuid.uuid4().bytes)。strip(“=”
(也适用于python 2,返回unicode字符串)。是否将URL安全uuid保存为模型uuid,或根据需要来回转换?@reducegosling我保存URL安全uuid