关于编码

一、escape,encodeURI,encodeURIComponent

1. escape 方法描述

对 String 对象编码以便它们能在所有计算机上可读

语法: escape(charstring)
返回:经过Unicode编码的新字符串
适用: 对非URL的字符串编码

说明
escape 返回一个包含了 charstring 内容的新的 String 对象( Unicode 格式), 所有空格、标点、重音符号以及其他非 ASCII 字符都用 %xx 编码代替,其中 xx 等于表示该字符的十六进制数。
例如,空格返回的是 "%20" 。 字符的值大于 255 的用 %uxxxx 格式存储。

2. encodeURI 方法

返回编码为有效的统一资源标识符 (URI) 的字符串。

语法: function encodeURI(URIString : String)

encodeURI 不对下列字符进行编码:“:”、“/”、“;”和“?”。请使用 encodeURIComponent 对这些字符进行编码。按字节转换,格式为%XX,其中 中文为三个字节

3. encodeURIComponent 方法

返回编码为统一资源标识符 (URI) 的有效组件的字符串。

语法 : function encodeURIComponent(encodedURIString : String)

encodeURIComponent 方法将对所有字符编码,
请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html,则其中的斜杠也将被编码,这样,当该字符串作为请求发送到 Web 服务器时它将是无效的。如果字符串中包含多个 URI 组件,请使用 encodeURI 方法进行编码。

二、UTF-8,GBK,GB2312

1. UTF8

UTF-8:Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。
UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。

2. GB2312,GBK

GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。
GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包含全部中文字符,是国家编码

总结
简单来说,unicode、gbk和大五码就是编码的值,而utf-8、uft-16之类就是这个值的表现形式。而前面那三种编码是不兼容的,同一个汉字,那三个码值是完全不一样的。如"汉"的uncode值与gbk就是不一样的,假设unicode为a040、gbk为b030,而uft-8码,就是把那个值表现的形式。utf-8码完全只针对uncode来组织的,如果gbk要转urf-8必须先转uncode码,再转utf-8就OK了。

需要注意的是,Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储,互联网的普及,强烈要求出现一种统一的编码方式。UTF-8就是在互联网上使用最广的一种unicode的实现方式。其他实现方式还包括UTF-16和UTF-32,不过在互联网上基本不用。重复一遍,这里的关系是,UTF-8是Unicode的实现方式之一。

参考
https://blog.csdn.net/yhhwatl/article/details/80198810

你可能感兴趣的:(关于编码)