Sae*_*ati 2 browser unicode internet-explorer-9
我在我的一个项目中创建了一个用于搜索操作的Web表单,HTML非常简单:
<form action='/search' method="post">
<input type="text" id='search-term' name='search-term' />
<input type="submit" id='start-search' alt='' value="" />
</form>
Run Code Online (Sandbox Code Playgroud)
因此,当用户键入Unicode搜索词并按Enter键时,将使用以下URL将HTTP Get请求发送到服务器:
http://www.example.com/search?search-term=????
Run Code Online (Sandbox Code Playgroud)
这在服务器中将是:
http://www.example.com/search?search-term=%D9%85%D8%AB%D8%A7%D9%84
Run Code Online (Sandbox Code Playgroud)
我能够检索search-term查询字符串的解码值,使用HttpContext.Current.Server.UrlDecode("%D9%85%D8%AB%D8%A7%D9%84")它返回????给我.直到这里一切正常,我没有问题.
但是,如果有人直接在IE9中输入上述地址,然后点击Enter,那么我在服务器上获得的是:
http://www.example.com/search?search-term=????
Run Code Online (Sandbox Code Playgroud)
这有什么不对?
更新:我们通过Fiddler检查了流量,您可以在以下图片中看到结果:
HTTP获取由Fiddler捕获的标头,用Firefox请求

HTTP获取由Fiddler捕获的标头,用IE请求

IE手动输入URL时不知道要使用哪种字符集,因此必须使用默认字符集.?Unicode字符转换为不支持这些Unicode字符的Ansi字符集时出现字符.当提交webform时,IE使用webform的charset,它可以由<form>标签本身,<meta>HTML文档中的标签或HTTP Content-Type标头指定,因此IE必须猜测使用正确的字符集的可能性较小.
| 归档时间: |
|
| 查看次数: |
367 次 |
| 最近记录: |