字符编码问题

为什么要用编码函数encodeURIComponent?
前端:请求的url参数处理,1)参数有可能包含& # 这些url中有特殊含义的字符,会破坏参数的完整性
2) 参数中可能有中文或者其他文字,有必要前后台协议统一utf8字符
后端: 后端数据直显在页面,有可能包含<script>等与html格式冲突的字符,需要编码
 
除了encodeURIComponent外,还有encodeURI和escape。escape已废弃,encodeURI应用于对整个url编码用的也不多。
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
 
 
什么是htmlEncode?
    function html(escape) {

        /*        var replace = ["'", "&#39;", '"', "&quot;", " ", "&nbsp;", ">", "&gt;", "<", "&lt;", "&", "&amp;", ];

        escape === false && replace.reverse();

        for (var i = 0, str = this; i < replace.length; i += 2) {

            str = str.replace(new RegExp(replace[i], 'g'), replace[i + 1]);

        }

        return str;*/



        function encode() {

            htmlDiv.innerHTML = "";

            return htmlDiv.appendChild(document.createTextNode(this)).parentNode.innerHTML.replace(/\s/g, "&nbsp;");

        }



        function decode() {

            htmlDiv.innerHTML = this;

            return htmlDiv.innerText;

        }

        var str = this;

        return escape === false ? decode.apply(str) : encode.apply(str);

    }

用于将html的特殊字符转义,使用情景?
1)用户输入文字信息会回显到页面,为了防止xss输入类似<script>等各种标签,encode输入内容。
2)将html结构保存到后台进行encode,省去了每次取值时encode也防止了存储时可能的冲突(如xml的<>、js的srcipt)。
 
 
字符编码

ASCII:英文编码

GBXXXX:中文编码 gb2312<gbk<gb18030

Unicode:统一各国文字的编码,utf8 变长的编码方式

Big5:繁体编码

ISO8859-1:西欧语音编码 latin-1

 

你可能感兴趣的:(字符编码)