字符编码问题

本文深入探讨了编码函数在前端与后端应用中的重要性,特别是如何处理URL参数和页面显示中的特殊字符,以确保数据传输的安全性和格式一致性。同时介绍了htmlEncode函数的作用及其使用场景,强调了字符编码在不同情境下的应用价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么要用编码函数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

 

转载于:https://www.cnblogs.com/yinshen/p/3347348.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值