繁体   English   中英

C#中的UrlDecode和ASCII字符

[英]UrlDecode and ASCII characters in C#

我正在开发一个与付款提供商(epdq)集成的项目。 他们将成功付款的变量以查询字符串的形式传递回我们的网站。 返回的一部分查询字符串包括客户名称。 我们已经注意到,如果有人输入特殊字符(例如“£”),则将返回查询字符串参数,如下所示:CN = Mr +%A3Test + Test

这很奇怪,因为我认为£符号的UrlEncoded值为%C2%A3。

无论如何,这都会引起问题,因为我们必须解码在查询字符串中传回的值并获取其真实值,在本例中为£符号。

我尝试了两种不同的方法:

            foreach (var key in querystring.Keys)
        {
            var enc = System.Text.Encoding.GetEncoding("iso-8859-1");
            Logger.Debug(HttpUtility.ParseQueryString(querystring.ToString(), enc)[key.ToString()]);
            Logger.Debug(HttpUtility.UrlDecode(querystring.Get(key.ToString()), enc));
        }

我已经尝试过iso-8859-1和utf-8。 但是,两者都将字符串转换为'Mr Test Test',显然它不能正确转换回该字符。

除了使用正则表达式并在字符串中搜索客户可以输入的全部可能字符,然后将其从等价的ASCII转换(我注意到ASCII%A3是£符号)之外,我不确定其他地方去与此。

谁能提供任何指针?

谢谢你的时间

dotdev

尝试以下编码:Encoding.GetEncoding(“ 1252”);

我知道我来不及回答,但是您可以尝试以下代码:

HttpUtility.UrlDecode(key.Replace("%A3", "£"));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM