拥有一个从另一个系统打开的网页,其参数可以包含扩展的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" />
任何解决方案?我无法控制提交系统,在提交之前无法对网址进行编码。
答案 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,这是一个危险的游戏,使你自己的系统更容易修补“你的控制”系统的错误。您确定此请求的颁发者无法修复其代码吗?