4月阅读周·HTTP权威指南:国际化之国际化的URI篇
引言
HTTP(Hypertext Transfer Protocol,超文本传输协议)是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。
《HTTP权威指南》一书将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,对HTTP“为什么”这样做进行了详细的解释,而不仅仅停留在它是“怎么做”的。此外,这本书还介绍了很多HTTP应用程序正常工作所必需且重要的非HTTP技术。
这本书主要包括以下内容:
- 第一部分描述了Web的基础构件与HTTP的核心技术
- 第二部分重点介绍了Web系统的结构构造块:HTTP服务器、代理、缓存、网关以及机器人应用程序。
- 第三部分提供了一套用于追踪身份、增强安全性以及控制内容访问的技术和技巧。
- 第四部分涵盖HTTP报文主体和Web标准,前者包含实际内容,后者描述并处理主体内容。
- 第五部分介绍了发布和传播Web内容的技巧。
- 第六部分是一些很有用的参考附录,以及相关技术的教程。
国际化
每天有上亿的人用数百种语言写着各种文档。为了真正实现万维网的目标,HTTP要能够传输和处理用多种语言和字母表编写的国际性文档。
网站国际化方面的两个主要问题:字符集编码(character set encoding)和语言标记(language tag)。HTTP应用程序使用字符集编码请求和显示不同字母表中的文本,它们使用语言标记根据用户所理解的语言来说明并限制内容。
国际化的URI
全球性的可转抄能力与有意义的字符的较量
URI的设计者们希望世界上每个人都能通过电子邮件、电话、公告板,甚至无线电来共享URI。他们还希望URI容易使用和记忆,但这两个目标是相互冲突的。为了让世界各地的人们都能够便捷地输入、操控,以及共享URI,设计者们为URI选择了常用字符的一个很有限的子集(基本的拉丁字母表中的字母、数字以及少数特殊符号)。世界上绝大多数软件和键盘都支持这个小的字符集合。
但不幸的是,限制了字符集的话,URI就无法被全球的人们方便地使用和记忆。世界上有很大一部分人甚至都不认识拉丁字母,他们几乎无法把URI当作抽象模式来记忆。URI的设计者们觉得确保资源标识符的可转抄能力(transcribability)和共享能力比让它们由最有意义的字符组成更加重要,因此(如今的)URI基本上是由ASCII字符的受限子集构成的。
URI字符集合
URI中允许出现的US-ASCII字符的子集,可以被分成保留、未保留以及转义字符这几类。未保留的字符可用于URI允许其出现的任何部分。保留的字符在很多URI中都有特殊的含义,因此一般来说不能使用它们。表16-7中列出了全部未保留、保留,以及转义字符。
转义和反转义
URI转义提供了一种安全的方式,可以在URI内部插入保留字符以及原本不支持的字符(比如各种空白)。每个转义是一组3字符序列,由百分号(%)后面跟上两个十六进制数字的字符。这两个十六进制数字就表示一个US-ASCII字符的代码。例如,要在URL中插入一个空白(ASCII 32),可以用转义%20,因为20是32的十六进制表示。类似地,如果想插入一个百分号并且不想让它被当作转义,就可以输入%25,25是百分号的ASCII代码的十六进制值。
URI中的概念性字符是如何转换为当前字符集中字符的代码字节的。需要处理URI时,转义会被反转义回来,产生它们代表的ASCII代码的字节。
在内部处理时,HTTP应用程序应当在传输和转发URI的时候保持转义不变。HTTP应用程序应该仅在需要数据的时候才对URI进行转义。更重要的是,应用程序应该确保任何URI都不会被反转义2次,因为在转义的时候可能会把百分号编码进去,反转义出来之后,再转一次就会导致数据丢失。
转义国际化字符
需要注意的是,要转义的值本身应该在US-ASCII代码值的范围内(0~127)。某些应用程序试图用转义值来表示iso-8859-1中扩展的字符(代码范围在128~255)。例如,网站服务器可能会错误地用转义来对包含了国际字符的文件名进行编码。这样做是不对的,可能会使别的应用出问题。
例如,文件名Sven Ölssen.html(包含了一个元音变音)可能被网站服务器编码为Sven%20%D6lssen.html。把空格编码为%20是对的,但从技术上说,把Ö编码为%D6是非法的,因为代码D6(十进制值214)落在了ASCII代码范围之外。ASCII只定义了最大值为0x7F(十进制值127)的代码。
总结
直到今天,URI还没有为国际化提供足够的支持。除了少数(定义得很糟的)例外,URI如今还是由US-ASCII字符的一个子集组成的。人们正在努力使主机名和URL的路径中能包含更丰富的集合中的字符,但直到现在,这些标准还没有被广泛接受和部署。现在让我们来回顾一下当前的一些尝试。
作者介绍
非职业「传道授业解惑」的开发者叶一一。
《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞 | 收藏⭐️ | 留言。
- 随机文章
- 热门文章
- 热评文章
- 探索智商测试:挑战你的思维,发掘你的潜力世界标准智商测试题
- 全球关注的环境问题:气候变化与可持续发展在全世界被广泛使用用英语说
- 国际智商测试标准题答案解析与技巧国际智商测试题及答案
- 六年级数学练习与测试:提升解题技巧与数学思维六年级数练答案零五网
- 性格测试题免费版 性格测试40题
- 测你的性格像《二十不惑》中的谁
- WPF国际化必备神器:ResXManager
- 能力测一测 测你比别人厉害的能力
- 性格测试 测试你的性格有多强势