带有特殊字符和 IE 的 url 参数值
本文关键字:url 参数 IE 特殊字符 | 更新日期: 2023-09-27 17:56:47
有一个从另一个系统打开的网页,其参数可以包含扩展的 ASCII 字符:
http://<host>/submitpage.cshtml?pname=SomeName
cshtml 网页像往常一样读取参数:
var pname = Request["pname"];
并将其显示在页面上,并带有@pname
浏览器,除了 IE(甚至 IE11)当 pname=Günther 或其他带有外语字符的名称; ü、ø 等。
Example:
http://<host>/submitpage.cshtml?pname=Günther
results in G�nther
网页正在使用<meta charset="UTF-8" />
有什么解决办法吗?我无法控制提交系统,因为提交前无法对网址进行编码。
所以在 RFC3986 和 RFC2234 之间,我们有以下相关的 URI 规则
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
HEXDIG = DIGIT / "A" / "B" / "C" / "D" / "E" / "F"
pct-encoded = "%" HEXDIG HEXDIG
query = *( pchar / "/" / "?" )
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
ALPHA = %x41-5A / %x61-7A ; A-Z / a-z
DIGIT = %x30-39 ; 0-9
因此,任何接受未编码字母 ü 的实现都是不符合标准的,任何发出带有此类字符的请求的用户代理也是不合规的。听起来你知道是这种情况。
IMO,这是一个危险的游戏,使您自己的系统更宽容地修补"失控"系统的故障。您确定此请求的颁发者无法修复其代码吗?