有关URL UTF-8编码的“幕后”浏览器或Web服务器是什么?

时间:2014-02-12 16:53:22

标签: http unicode encoding utf-8

考虑这两个网址:

一个包含一个明确的参数,告诉谷歌翻译文本到语音编码是UTF-8。

在Chrome(版本32.0.1700.107),Safari(版本7.0.1(9537.73.11))上,这些网址产生相同的语音输出。

但是,在Mobile Safari上,通过例如VLC加载URL或通过命令行参数(例如mpg321),translate.google.com认为要编码的URL不同,并且读取“©”(版权)而不是“é。”

深入了解作为请求的一部分发送的Chrome标头,我找不到任何编码参考。

  • 这是否在浏览器中默默发生?它是否明显发生 我错过了吗?
  • 或者是隐含地在服务器端发生的事情 取决于哪个浏览器发送请求?

N.B。我不是要求浏览器“漂亮地打印”URL文本。检查确认编码将作为幕后的%-escaped字符串发送,就像它是

一样

1 个答案:

答案 0 :(得分:0)

URL不支持非ASCII Unicode字符,因此它们必须是字符集编码和url编码(另一方面,IRI支持未编码的Unicode字符)。用于Unicode字符编码的字符集由网站决定,而不是网络浏览器。 URL或HTTP标头无法指定URL中正在使用哪个字符集(ie=UTF-8部分是translate_tts脚本的任意输入数据,而不是URL本身的控制因素)。 MOST网站现在使用UTF-8,但并非所有网站(许多外国网站,如俄罗斯网站,都采用本地编码),因此除非另有配置,否则网页浏览器往往默认为UTF-8。这显然不适用于不期望UTF-8的网站。通常情况下,它是一个创建Web浏览器随后使用的URL的网站,因此网站决定他们希望自己的URL格式化。