我在数字上使用了这个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
如何实现这个
答案 0 :(得分:0)
我从未见过encodeURIComponent抛出JS错误。它可能在第三方库中的某个地方。根据您的browser support要求,您可以使用内置的base64编码器/解码器
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);