Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

编码 #23

Open
CoolRabbit520 opened this issue Mar 21, 2018 · 0 comments
Open

编码 #23

CoolRabbit520 opened this issue Mar 21, 2018 · 0 comments

Comments

@CoolRabbit520
Copy link
Owner

ASCII编码

早期使用的字符集是 ASCII(7比特,可提供 128 个不同的字符值)。ASCII 支持 0-9 的数字,大写和小写英文字母表,以及一些特殊字符。
由于很多国家使用的字符并不属于 ASCII,对ACSII进行了扩展。

Unicode编码

Unicode 联盟开发了 Unicode 标准。
Unicode 标准涵盖了世界上的所有字符、标点和符号。

Unicode 只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。因此出现了 Unicode 的多种存储方式,也就是说有许多种不同的二进制格式,可以用来表示 Unicode。

UTF-8

UTF8是Unicode编码的一种实现。
UTF8 中的字符可以是 1-4 个字节长。UTF-8 可以表示 Unicode 标准中的任意字符。UTF-8 向后兼容 ASCII。
编码规则:

URL编码

URL= protocol://hostname:port/path/filename?search#hash
服务类型://主机名:端口号/路径/文件名?查询键=值#锚点

一般来说,URL只能使用字母、数字和某些标点符号。对于包含中文或者其他一些特殊的符号,需要对url进行编码处理。

URL编码遵循下列规则:
%百分号加上两位十六进制形式数字(http://g.cn/search?q=%61%62%63,实际上就等同于在google上搜索abc)

特殊符号的处理方式:

编码类型的选择:

  • 网址路径的编码,用的是utf-8编码。
  • 查询字符串的编码,用的是操作系统的默认编码。
  • GET和POST方法的编码,用的是网页的编码。<meta http-equiv="Content-Type" content="text/html;charset=xxxx">

encodeURI()

全局函数
采用UTF-8(16进制)给URI进行编码
不会对本身属于URI的特殊字符进行编码,一般处理空格和汉字。
如果 URI 组件中含有分隔符,比如 ? 和 #,则应当使用 encodeURIComponent() 方法分别对各组件进行编码。
ASCII的字母、数字不编码,- _ . ! ~ * ' ( )也不编码,URI中具有特殊意义的字符也不编码(如; / ? : @ & = + $ , #等)。
参数中的其他字符将转换成UTF-8编码方式的字符,并使用十六进制转义序列(%xx)生成替换。

encodeURI实例:
encodeURI("测试 http://www.baidu.com/test?v=ab cd+@#")
结果为:
"%E6%B5%8B%E8%AF%95%20http://www.baidu.com/test?v=ab%20cd+@#"

encodeURIComponent()

全局函数
替换所有非字母数字字符
与encodeURI不同的是,它会对特殊符号如"; / ? : @ & = + $ , #"进行编码。
encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号。
encodeURIComponent实例:
encodeURIComponent("测试 http://www.baidu.com/test?v=ab cd+@#")
结果:
%E6%B5%8B%E8%AF%95%20http%3A%2F%2Fwww.baidu.com%2Ftest%3Fv%3Dab%20cd%40%23%2B。

URI是统一资源标识的意思,通常我们所说的URL只是URI的一种。这两个函数是URI。

参考资料

1.URL原理、URL编码、URL特殊字符 - CSDN博客
2.关于URL编码 - 阮一峰的网络日志

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant