替换或避免encodeURIComponent或encodeuri,encode,escape以将数据从客户端传递到服务器

时间:2017-09-19 14:44:21

标签: javascript java jquery encode encodeuricomponent

考虑我压缩数据如下:

一个㠵堥䂢桥ƴېୠ⤡

我通过Java脚本/ jquery发送这些字符:

function callServer()
{
    var compressed = LZString.compressToUTF16(uncompressed64Data); 

    jQuery.ajax({
        url : "/RegisterServlet_2/servlet/Register",
        type : "POST",
        dataType: "json",
         data: {
                 img : compressed,
            },
        cache : false,
        async : false,
        success : function()
        {
        },
        error : function()
        {
        }
    });
}

通过自动发送此信息时,由于特殊字符和请求正文而编码的数据如下所示:%E1%BA%A2%E3%A0%B5%E5%A0%A5%E4%82%A2%E6%A1 %A5%C6%B4%DB%90%E0%AD

我的目标是我想减少带宽权重,因此我使用了压缩算法并减少了很多字符。 (请注意,这里给出的是样本,但我使用的数据很大!)

因此我想发送特殊字符,就像它没有任何编码算法一样,或者即使我允许字符计数大小不应该在编码后增加? 任何帮助非常感谢。提前致谢

1 个答案:

答案 0 :(得分:0)

如果大小很重要,则最好去除所有连续的空格(除非HTML包含<pre>元素/ style,否则可以安全地完成此操作)。然后,仅替换有效字符:

var html = document.getElementById("html").innerHTML;
html = html.replace(/\s{2,}/g, '')   // <-- Replace all consecutive spaces, 2+
           .replace(/%/g, '%25')     // <-- Escape %
           .replace(/&/g, '%26')     // <-- Escape &
           .replace(/#/g, '%23')     // <-- Escape #
           .replace(/"/g, '%22')     // <-- Escape "
           .replace(/'/g, '%27');    // <-- Escape ' (to be 100% safe)
var dataURI = 'data:text/html;charset=UTF-8,' + html;

https://stackoverflow.com/a/9239272/209942