您现在的位置是:亿华云 > 系统运维
面试官竟然敢问我URLEncode 及Gbk, Unicode等编码
亿华云2025-10-09 11:06:29【系统运维】5人已围观
简介URL encodeURL encode 实际上是对 URI 进行 encode的,而不是对 URL。什么是 URI?Uniform Resource Identifier (URI,统一资源标志符)
URL encode
URL encode 实际上是面试对 URI 进行 encode的,而不是官竟对 URL。
什么是然敢 URI?
Uniform Resource Identifier (URI,统一资源标志符) ,编码是面试用来标识资源的字符串,规定了以下文法:
上图可见,官竟有效的然敢 URI 至少包含 scheme,: 以及 path(路径),编码如经典的面试触发操作系统发邮件动作的mailto 格式[1]:
mailto:John.Doe@example.com └─┬──┘ └────┬─────────────┘ scheme path其他就是可选的组合路径了,如 scheme://host path ?官竟 query # fragment 就会我们常见的 url 格式:
userinfo host port ┌──┴───┐ ┌──────┴──────┐ ┌┴┐ https://john.doe@www.example.com:123/forum/questions/?tag=networking&order=newest#top └─┬─┘ └───────────┬──────────────┘└───────┬───────┘ └───────────┬─────────────┘ └┬┘ scheme authority path query fragmentURI包含URLs and URNs
URL:Uniform Resource Locator(统一资源定位符):定义了如何找到一个资源 URN: Uniform Resource Name (统一资源名称):定义了这个资源的唯一名字简单说作用就是:
URL:我们目前常用的网站地址,提供了以什么协议(http,然敢ftp)来访问,编码地址路径在哪里(bilibili.com,面试 abc.com)等等。 URN:我要获取的官竟这个资源有一个唯一名字,我提供过去,然敢统一中心会解析这个 URN,不管这个资源搬迁到哪里,只要存在就会返回给你。站群服务器而 URL 一旦搬迁了,就不是有效地址了,你需要一个新地址去定位这个资源。由于历史原因,URN 几乎没有普及,所以某种程度上给人造成了 URL 跟 URI 好像差不多的样子。Reserved Characters(保留字符)
URI 规定了要保留以下字符作特殊使用:
! * ( ) ; : @ & = + $ , / ? # [ ] 来自 RFC 3986 section 2.2 Reserved Characters (January 2005)如 ? 用来带 url 中的参数,/ 用来分割 url, & 用来拼接 query等,保留字符都有自己的作用。
因此需要传此类字符而不是作特殊字符作用使用时,不能直接放入 url 中,需要编码,也就是 url encode 做的事情。
encode 很简单,把保留字符如 ? 转成 ASCII[2] 的 16 进制表示(? 就是 3F),在前面加一个 % 代表这是转码字符即可,也就是 ? 需要 encode 成 %3F 放在 url 中,所以 url encode 又称作 Percent-encoding。
实际应用
在下述url 中,需要传入跳转 BACK_URL 参数 new_login.com?a=12 时,就需要转移 ? 跟 =g .
https://third_party_login.com?BACK_URL=new_login.com?a=12 就应该转换成
https://third_party_login.com?BACK_URL=new_login.com%3Fa%3D12
这样子后面的服务器托管 ? 与 = 就不会被处理掉,而能够作为 BACK_URL 这个参数的一部分传给后端。
http 协议中 headers 的 content-type 里常见的的 application/x-www-form-urlencoded,指定请求 body 使用 URL encoded。
gbk,Unicode,UTF-8
鉴于珠玉在前,我就整理下Unicode 和 UTF-8 有什么区别?[3]的内容 ok 了:
简单来说:
Unicode 是「字符集」 UTF-8 是「编码规则」 字符集:为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point) 编码规则:将「码位」转换为字节序列的规则(编码 / 解码 可以理解为 加密 / 解密 的过程)详细过程:
中国人民通过对 ASCII 编码的中文扩充改造,产生了 GB2312 编码,可以表示 6000 多个常用汉字。 汉字实在是太多了,包括繁体和各种字符,于是产生了 GBK 编码,它包括了 GB2312 中的编码,同时扩充了很多。 中国是个多民族国家,各个民族几乎都有自己独立的语言系统,亿华云计算为了表示那些字符,继续把 GBK 编码扩充为 GB18030 编码。 每个国家都像中国一样,把自己的语言编码,于是出现了各种各样的编码,如果你不安装相应的编码,就无法解释相应编码想表达的内容。 终于,有个叫 ISO(国际标谁化组织) 的组织看不下去了。他们一起创造了一种编码 UNICODE(Universal Multiple-Octet Coded Character Set),这种编码非常大,大到可以容纳世界上任何一个文字和标志。所以只要电脑上有 UNICODE 这种编码系统,无论是全球哪种文字,只需要保存文件的时候,保存成 UNICODE 编码就可以被其他电脑正常解释。 unicode 在很长一段时间内无法推广,直到互联网的出现,为解决 unicode 如何在网络上传输的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现了。UNICODE 在网络传输中,出现了两个标准 UTF-8 和 UTF-16,分别每次传输 8 个位和 16 个位。UTF-8 顾名思义,是一套以 8 位为一个编码单位的可变长编码。 于是就会有人产生疑问,UTF-8 既然能保存那么多文字、符号,为什么国内还有这么多使用 GBK 等编码的人?因为 UTF-8 等编码体积比较大,占电脑空间比较多,如果面向的使用人群绝大部分都是中国人,用 GBK 等编码也可以。unicode 在很长一段时间内无法推广,直到互联网的出现,为解决 unicode 如何在网络上传输的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义,UTF-8 就是每次 8 个位传输数据,而 UTF-16 就是每次 16 个位。UTF-8 就是在互联网上使用最广的一种 unicode 的实现方式,这是为传输而设计的编码,并使编码无国界,这样就可以显示全世界上所有文化的字符了。UTF-8 最大的一个特点,就是它是一种变长的编码方式。它可以使用 1~4 个字节表示一个符号,根据不同的符号而变化字节长度,当字符在 ASCII 码的范围时,就用一个字节表示,保留了 ASCII 字符一个字节的编码做为它的一部分,注意的是 unicode 一个中文字符占 2 个字节,而 UTF-8 一个中文字符占 3 个字节)。从 unicode 到 utf-8 并不是直接的对应,而是要过一些算法和规则来转换。
References
[1] mailto 格式: https://www.wikiwand.com/en/Mailto
[2] ASCII: https://www.wikiwand.com/en/American_Standard_Code_for_Information_Interchange
[3] Unicode 和 UTF-8 有什么区别?: https://www.zhihu.com/question/23374078/answer/69732605
本文转载自微信公众号「山尽写东西的cache」,可以通过以下二维码关注。转载本文请联系山尽写东西的cache公众号。
很赞哦!(211)
相关文章
- 公司名字不但要与其经营理念、活动识别相统一,还要能反映公司理念,服务宗旨、商品形象,从而才能使人看到或听到公司的名称就能产生愉快的联想,对商店产生好感。这样有助于公司树立良好的形象。
- 4、待所有域名查询结束后可在右侧点击导出结果,即可以excel的文件方式将查询到的结果导出。
- 比较短的域名方便用户记忆和传播,它带来的好处往往会超过其他类型的域名,如果你非要域名短而且还要包含关键词,那么往往会事与愿违,现在这种域名基本上是可遇而不可求的。
- 前面这两个步骤都是在本机完成的。到这里还没有涉及真正的域名解析服务器,如果在本机中仍然无法完成域名的解析,就会真正请求域名服务器来解析这个域名了。
- 为什么起域名意义非凡?起域名有什么名堂?
- 四、长串数字域名
- CNAME:对应解析的记录值为域名地址
- ICANN 规章禁止转移已经被记录或者在60天前内转移的域名。
- 公司在注册域名时还需要确保邮箱的安全性。如果邮箱不安全,它只会受到攻击。攻击者可以直接在邮箱中重置密码并攻击用户。因此,有必要注意邮箱的安全性。
- 5、使用企业名称的英文名称作为域名也是国内许多企业选择域名的一种方式,特别适合一些与计算机、网络和通信相关的行业。
热门文章
站长推荐
域名资源有限,好域名更是有限,但机会随时都有,这取决于我们能否抓住机会。一般观点认为,国内域名注册太深,建议优先考虑外国注册人。外国注册人相对诚实,但价格差别很大,从几美元到几十美元不等。域名投资者应抓住机遇,尽早注册国外域名。
④注册门槛低
.com域名是国际最广泛流行的通用域名,目前全球注册量第一的域名,公司企业注册域名的首选。国际化公司通常会注册该类域名。
为什么说注册域名注意细节?哪些我们不能忽视?
用户邮箱的静态密码可能已被钓鱼和同一密码泄露。在没有收到安全警报的情况下,用户在适当的时间内不能更改密码。在此期间,攻击者可以随意输入帐户。启用辅助身份验证后,如果攻击者无法获取移动电话动态密码,他将无法进行身份验证。这样,除非用户的电子邮件密码和手机同时被盗,否则攻击者很难破解用户的邮箱。
四、配置网站,填充内容
只要我们做的是从目前的市场情况选择域名,从简单易记,从个性特征上,我们就可以找到一个好域名进行注册。域名注册进行域名记录和解析以及绑定网站后,客户可以通过URL登录您的网站。
换新域名(重新来过)