-1

我正在使用这个javascript 程序来尝试编码/解码一些字符串。

这适用于某些字符串,但对于这样的电子邮件,我得到无效的结果:

base32.encode("юзер@екзампл.ком.example.com");

输出:

9rvundefinedag206mxundefinedecundefinedw7wxjweundefinedy7gq6ay31dnr6rt9ecdqp

输入:

base32.decode(9rvundefinedag206mxundefinedecundefinedw7wxjweundefinedy7gq6ay31dnr6rt9ecdqpu");

结果是:

"N7ªµÏ\Õ@@5;ªµÏ\×3Uk¹¼?;.;Uk¹¾<.example.com"

如您所见,它在解码时不会产生原始字符串。不知道为什么。

4

1 回答 1

1

юзер@екзампл.ком.example.com.
它是 28 个字符,并非全是 ASCII(或一字节 utf-8)。

但是有几个输入字符是多字节 utf-8 字节。
它是 42 个 utf-8 字节。

Base32 编码它应该是每个字节的两个字符。

9rvundefinedag206mxundefinedecundefinedw7wxjweundefinedy7gq6ay31dnr6rt9ecdqp
是 76 个字符,预期长度明显错误。

预期的 Base32 编码应该是 84 个字符。

这可能是因为有几个输入字符是多字节 utf-8 字节。

问题中似乎缺少一些东西。

于 2017-06-22T02:37:58.633 回答