day16-JavaScript序列化以及转义
一、前言
我们在python里面也学过序列化,是用json模块,今天我们就来看看js的序列化和转义是怎么做的。
二、序列化
2.1、序列化
说明:将对象转换为字符串,用法:JSON.stringify()
>>>li = [11,22,33,44] [11, 22, 33, 44] >>>JSON.stringify(li); "[11,22,33,44]"
2.2、反序列化
说明:将字符串转换为对象类型,用法:JSON.parse()
>>>s = "[11,22,33,44]" "[11,22,33,44]" >>>JSON.parse(s) (4) [11, 22, 33, 44]
三、转义
所谓转义就是把你的中文转换为特殊格式。
3.1、encodeURI()
说明:URI中的转义字符
>>>http ="https://www.sogou.com/web?query=张其高" "https://www.sogou.com/web?query=张其高" >>>encodeURI(http); "https://www.sogou.com/web?query=%E5%BC%A0%E5%85%B6%E9%AB%98"
3.2、decodeURI()
说明:URI中未转义的字符
>>>http ="https://www.sogou.com/web?query=张其高" "https://www.sogou.com/web?query=张其高" >>>encodeURI(http); "https://www.sogou.com/web?query=%E5%BC%A0%E5%85%B6%E9%AB%98" >>>decodeURI(encodeURI(http)) "https://www.sogou.com/web?query=张其高"
3.3、encodeURIComponent()
说明:URI组件中的未转义字符
>>>http ="https://www.sogou.com/web?query=张其高" "https://www.sogou.com/web?query=张其高" >>>encodeURIComponent(http) "https%3A%2F%2Fwww.sogou.com%2Fweb%3Fquery%3D%E5%BC%A0%E5%85%B6%E9%AB%98"
3.4、decodeURIComponent()
说明:URI组件中的未转义字符
>>>http ="https://www.sogou.com/web?query=张其高" "https://www.sogou.com/web?query=张其高" >>>encodeURIComponent(http) "https%3A%2F%2Fwww.sogou.com%2Fweb%3Fquery%3D%E5%BC%A0%E5%85%B6%E9%AB%98" >>>decodeURIComponent(encodeURIComponent(http)) "https://www.sogou.com/web?query=张其高"
3.5、escape()
说明:对字符串转义
>>>http ="https://www.sogou.com/web?query=张其高" "https://www.sogou.com/web?query=张其高" >>>escape(http) "https%3A//www.sogou.com/web%3Fquery%3D%u5F20%u5176%u9AD8"
3.6、unescape()
说明:给转义字符串解码
>>>http ="https://www.sogou.com/web?query=张其高" "https://www.sogou.com/web?query=张其高" >>>escape(http) "https%3A//www.sogou.com/web%3Fquery%3D%u5F20%u5176%u9AD8" >>>unescape(escape(http)) "https://www.sogou.com/web?query=张其高"
3.7、URIError
说明:由URI的编码和解码方法抛出
问题:我们在登录的时候,用户名和密码为何保留一个月之久?
客户端登录->服务端 -> 服务端给你发一个字符串过来->拿到字符串->对字符串做处理,然后保存在本地中或者浏览器中(cookie),这个处理就会用到escape()转义->再给服务器发送的时候unescape()再解码,
所以cookie就是把数据经过转义(escape)后,保存在cookie中。