我试图将JS代码片段存储为JSON,方法是首先将该片段存储在JS对象中,然后将该对象下载为JSON文件。我可以使用encodeURI
对JS进行精细编码
例如:
encodeURI("var a = 100")
它给出了一个很好的编码字符串:
"var%20a%20=%20100"
它可以存储在JS对象中,如下所示:
data = {
"code" : "var%20a%20=%20100"
}
但是如果我将这个对象下载为JSON:
var link = document.createElement("a");
link.download = 'my_file.json';
link.href = "data:json," + JSON.stringify(data);
document.body.appendChild(link);
link.click();
下载的文件在打开文件时显示一个解码的片段,这使得JSON无效。
我正在使用Chrome浏览器。浏览器在将JS对象下载为JSON文件时会自动解码编码字符串吗?
事实证明,为了在下载的JSON文件中保留编码,我必须同时使用encodeURIComponent
和encodeURI
。
encodeURIComponent(encodeURI( // the code snippet