在URL中转义Base64字符串?

时间:2013-12-04 18:14:10

标签: javascript jquery html jsp dom

出于某种原因,我需要在URL中放置一个Base64编码的字符串,即

<script>
    var URL = "localhost:8080/MyApp/order?z=AAAAAAAEJs4"
</script>

这个URL是由Java生成的,这里的问题是我只能用java来使Base 64编码的字符串对URL友好,但不友好,所以fire bug给我以下错误:

SyntaxError: unterminated string literal

显然,Base64字符串中有charactors需要转义。但是我不能使用escape()URLencoding()方法,因为请求将直接传递给控制器​​并由java代码操纵,因此在这种情况下没有“下一页”。

那么如何使这项工作呢?

2 个答案:

答案 0 :(得分:0)

如果您尝试将该z url属性转换为可理解的字符串/变量,则必须使用库来转换它。以下是您必须加载的Javascript base64库的链接。

http://www.webtoolkit.info/javascript-base64.html

您可能还需要一个库来访问您网址中的z属性。我会推荐这个:

https://github.com/allmarkedup/purl

答案 1 :(得分:0)

以防它有帮助,这里是一个简短的JS代码,不需要依赖:

String.prototype.base64EncodeUrl = function () {
    var str = this;
    str = window.btoa(unescape(encodeURIComponent( str )));
    return str.replace(/\+/g, '-').replace(/\//g, '_').replace(/\=+$/, '');
};

String.prototype.base64DecodeUrl = function () {
    var str = this, str_pad = (str + '===');
    str = str_pad.slice(0, str.length + (str.length % 4));
    str = str.replace(/-/g, '+').replace(/_/g, '/');
    return decodeURIComponent(escape(window.atob( str )));
};