我目前有一个如下所示的数组:
["screen", "left_side", "left_side", "right_side", "left_side", "right_side", "left_side", "right_side"]
我现在想以某种方式加密它,所以我可以将它用作URL,例如:http://www.site.com/app.html?array=...
这是因为我想允许用户共享他们的数组。
有没有办法加密一个数组,它可以在URL字符串中使用并稍后解密?
答案 0 :(得分:6)
您可以使用atob
和btoa
功能。
myArray = ["screen", "left_side", "left_side", "right_side", "left_side", "right_side", "left_side", "right_side"]
btoa(JSON.stringify(myArray)) // "WyJzY3JlZW4iLCJsZWZ0X3NpZGUiLCJsZWZ0X3NpZGUiLCJyaWdodF9zaWRlIiwibGVmdF9zaWRlIiwicmlnaHRfc2lkZSIsImxlZnRfc2lkZSIsInJpZ2h0X3NpZGUiXQ=="
然后您可以将其转换回原始数组
array = JSON.parse(atob(str))
如果你包含LZString(如评论中所述),你可以获得更短的字符串。
var str = btoa(JSON.stringify(myArray)); // 132 characters
var str = LZString.compressToBase64(JSON.stringify(myArray)); // 72 characters
var str = LZString.compressToBase64(myArray.toString()); // 64 characters
要解压缩,
array = JSON.parse(LZString.decompressFromBase64(str));
答案 1 :(得分:0)
这可能对你有帮助......
<script>
var uri='http://www.site.com/app.html?["screen", "left_side", "left_side", "right_side", "left_side", "right_side", "left_side", "right_side"]';
var uri_encode=encodeURIComponent(uri);
document.write(uri_encode);
document.write("<br>");
document.write(decodeURIComponent(uri_encode));
</script>
答案 2 :(得分:0)
这应该有用。
var a = ["screen", "left_side", "left_side", "right_side", "left_side", "right_side", "left_side", "right_side"]; var stringa = a.toString; var encodeda = encodeURI(stringa);
然后像这样使用它
var site = "http://www.site.com/app.html?array=" + a;