具有特殊字符和IE的Url参数值

时间:2015-06-16 16:11:30

标签: c# html5 internet-explorer razor

拥有一个从另一个系统打开的网页,其参数可以包含扩展的ascii字符:

http://<host>/submitpage.cshtml?pname=SomeName

cshtml网页像往常一样读取参数:

var pname = Request["pname"];

并在@pname

的页面上显示

当pname =Günther或其他具有外来字符的名称时,除IE(甚至IE11)以外的所有浏览器都可以正常工作; ü,ø等。

Example:
http://<host>/submitpage.cshtml?pname=Günther
results in G�nther

网页正在使用<meta charset="UTF-8" />

任何解决方案?我无法控制提交系统,在提交之前无法对网址进行编码。

1 个答案:

答案 0 :(得分:0)

因此,在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,这是一个危险的游戏,使你自己的系统更容易修补“你的控制”系统的错误。您确定此请求的颁发者无法修复其代码吗?