【发布时间】:2011-12-21 23:15:44
【问题描述】:
我想写一些 ID 用于Crockford's base32 中的 URL。我正在使用base32 npm module。
因此,例如,如果用户输入 http://domain/page/4A2A,我希望它映射到与 http://domain/page/4a2a 相同的底层 ID
这是因为我想要人性化的 URL,用户不必担心大小写字母之间的区别,或者“l”和“1”之间的区别——他们只需要得到他们想要的页面预计。
但我很难实现这一点,主要是因为我太模糊了,无法理解编码的工作原理。首先我尝试了:
var encoded1 = base32.encode('4a2a');
var encoded2 = base32.encode('4A2A');
console.log(encoded1, encoded2);
但它们映射到不同的底层 ID:
6hgk4r8 6h0k4g8
好的,所以也许我需要使用解码?
var encoded1 = base32.decode('4a2a');
var encoded2 = base32.decode('4A2A');
console.log(encoded1, encoded2);
不,这只是给我空字符串:
" "
我做错了什么,如何让 4A2A 和 4A2A 映射到同一事物?
【问题讨论】:
-
如果您尝试在
6hgk4r8上使用解码会发生什么?那样有用吗?您确定4a2a是该库的有效 base-32 编码吗? -
是的,确实有效。我想也许你是对的,
4a2a不是有效的 base-32 编码......但为什么不呢? -
好吧,当我在这里运行它时,4a2a 实际上返回输出,一个引号和控制字符 0x84。所以我不确定你从哪里得到 4a2a,但如果它应该返回文本(而不是数字),它使用不同的 base-32。
标签: javascript url encoding base32