考虑这两个网址:
http://translate.google.com/translate_tts?ie=UTF-8&tl=en&q=Welcome%20home%2C%20Linn%C3%A9a
http://translate.google.com/translate_tts?&tl=en&q=Welcome%20home%2C%20Linn%C3%A9a
一个包含一个明确的参数,告诉谷歌翻译文本到语音编码是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字符串发送,就像它是
一样答案 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格式化。