Base64在javascript中对数字进行编码

时间:2014-12-11 02:54:50

标签: javascript

我在数字上使用了这个base64和uriencode

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/core-min.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/enc-base64-min.js"></script>
<script>
    var num= '1418265869452';
    var base64num =  CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(salt)); 
    var encodeuri = encodeURIComponent(base64num);
</script>

base64 num给了我MTQxODI2NTg2OTQ1Mg ==

但实际上我还需要在base64编码后对其进行uri编码

当我尝试编码URIComponent(base64num)时,它给我一个错误,如下所示:

 Exception thrown from JavaScript : Error: Malformed UTF-8 data 

如何实现这个

2 个答案:

答案 0 :(得分:0)

我从未见过encodeURIComponent抛出JS错误。它可能在第三方库中的某个地方。根据您的browser support要求,您可以使用内置的base64编码器/解码器

enter image description here

var base64num = btoa('1418265869452'),
    encodeuri = encodeURIComponent(base64num);
encodeuri; // "MTQxODI2NTg2OTQ1Mg%3D%3D"

当您尝试对其进行解码时,也可能会发生这种情况。首先,在尝试对其进行base64解码之前,必须先对decodeURIComponent进行解码。

答案 1 :(得分:0)

您正在传递 salt变量作为参数,但我没有看到它的任何初始化。相反,您需要传递 num ,然后它将开始工作,因为我使用 num 代替 salt 并且在我的工作中完全正常端。

以下是更新后的JSFiddle Link

更新代码:

var num= '1418265869452';
var base64num =  CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(num)); 
var encodeuri = encodeURIComponent(base64num);
alert(encodeuri);