我正在尝试使用HttpUtility.UrlEncode编码以下字符串;
1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "userbouquet.dbe01.tv" ORDER BY bouquet
我得到的结果是;
1%3a7%3a1%3a0%3a0%3a0%3a0%3a0%3a0%3a0%3aFROM+BOUQUET+%22userbouquet.dbe0e.tv%22+ORDER+BY+bouquet
所以它转换为:%3a,空格为+和“到%22。根据MSDN上的文档,:不应该转换。另外我不明白为什么空间被转换为加号,我认为应该是%20。
有关正在发生的事情和任何可能的解决方法的任何信息?
注意:应保持原样,空格应为%20,“应为%22
编辑:我找到了一个使用简单字符串替换函数的解决方案,但如果有人仍然可以解释为什么urlencode会以这种方式运行。感谢答案 0 :(得分:3)
+
是一个保留的网址字符,的预期用途代表空间,因此翻译是合法的。:
是保留字符,但未在此处使用(AFAIK),因此百分比编码是合适的。"
既不是保留也不是非保留(即字母数字等),因此百分比编码是唯一的选择答案 1 :(得分:0)
我不确定为什么你觉得你需要一个解决方法。确实,过去在某些服务器上使用+用于空间而非合法处理。
您可以考虑将Uri.EscapeDataString
作为替代方案,它仍然会编码:%3A(对于十六进制值也使用大写),但它会将空格编码为%20。