在JavaScript中编码为字母数字

时间:2015-08-16 16:42:28

标签: javascript node.js string encoding urlencode

如果我有一个随机字符串并希望将其编码为另一个只包含字母数字字符的字符串,那么在JavaScript / NodeJS中最有效的方法是什么?

显然,必要时可以将输出字符串转换回原始输入字符串。

谢谢!

2 个答案:

答案 0 :(得分:4)

要编码为字母数字字符串,您应使用字母数字编码。一些流行的包括十六进制(base16),base32,base 36,base58和base62。使用十六进制的替代方法,因为较大的字母表导致较短的编码字符串。这里有一些信息:

  • 十六进制很受欢迎,因为它很常见。
  • Base32和Base36对不区分大小写的编码很有用。 Base32更易于阅读,因为它删除了一些容易被误读的字母。 Base32用于游戏和许可证密钥。
  • Base58和Base62对区分大小写的编码很有用。通过删除一些容易被误读的字母,Base58也被设计为更具人性化。 Base58由Flickr,比特币和其他人使用。

在NodeJS中,十六进制编码为natively supported,可以按如下方式完成:

// Encode
var hex = new Buffer(string).toString('hex');

// Decode
var string = new Buffer(hex, 'hex').toString();

重要的是要注意其中一些的不同实现。例如,Flickr和比特币使用Base58的不同实现。

答案 1 :(得分:-3)

为什么不将2个字符串存储在不同的变量中,所以不需要转换回来?

要提取所有字母数字,您可以使用正则表达式函数,如下所示:

var str='dssldjf348902.-/dsfkjl';
var patt=/[^\w\d]*/g;
var str2 = str.replace(patt,'');

str2变为dssldjf348902dsfkjl