首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#百分比译码

C#百分比译码
EN

Stack Overflow用户
提问于 2016-02-11 15:18:27
回答 2查看 666关注 0票数 1

我正在尝试解码从PHP脚本传递给我的C#应用程序的百分比编码字符串。PHP对数据进行加密,因此有许多特殊字符我会按百分比编码。

下面是我在URL中传递的字符串:

%C9%90%04L%EFEA%D1U%AFi%CBc%3A%E5%D0%40Q%D6%1Bn%C9%C3%B5%0FT%FC%E5h%95m%EF%BF%24tB%A6%D1%08%3B%83%A1%CF%1B%99Zo%02

但是它的解码部分有问题:当我获取查询字符串时,如下所示:

代码语言:javascript
复制
var queryString = HttpContext.Current.Request.QueryString;
var token = queryString["token"];

不过,变量token等于以下内容:

%C9%90%04L%EF%BF%BDEA%EF%BF%BDU%EF%BF%BDI%EF%BF%BDC%3A%EF%BF%BD%EF%BF%BD%40Q%EF%BF%BD%1BN%EF%BF%BD%C3%B5%0FT%EF%BF%BD%EF%BF%BDH%EF%BF%BDM%EF%BF%BD%24TB%EF%BF%BD%EF%BF%BD%08%3B%EF%BF%BD%EF%BF%BD%EF%BF%BD%1B%BF%BDZO%02

这绝对不是我放入查询字符串中的内容。当查看它时,它第一次出错的时候是%EF(在原始查询字符串中启动第11个字符)。而不是%EF,而是显示:%EF%BF%BD。当我搜索一点时,我发现了本网页,上面写着“十六进制,UTF-8字节”是EF BF BD。

编辑:

忘了提一下,QueryString看起来是这样的:

token=%c9%90%04L%ef%bf%bdEA%ef%bf%bdU%ef%bf%bdi%ef%bf%bdc%3a%ef%bf%bd%ef%bf%bd%40Q%ef%bf%bd%1bn%ef%bf%bd%c3%b5%0fT%ef%bf%bd%ef%bf%bdh%ef%bf%bdm%ef%bf%bd%24tB%ef%bf%bd%ef%bf%bd%08%3b%ef%bf%bd%ef%bf%bd%ef%bf%bd%1b%ef%bf%bdZo%02&oauth_token_secret=S%23%2bw%ef%bf%bd%ef%bf%bdX%17%ef%bf%bd0%ef%bf%bd%60%ef%bf%bd%ef%bf%bd%ef%bf%bd%ef%bf%bd*%ef%bf%bdi%08%ef%bf%bd%ef%bf%bd%ef%bf%bd%ef%bf%bd%07%ef%bf%bd%12RS07%ef%bf%bdgl%1e%ef%bf%bd%d7%832%d1%a1%ef%bf%bd%275%ef%bf%bdv%ef%bf%bd

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-11 15:24:35

你可能在找HttpServerUtility.UrlDecode法

代码语言:javascript
复制
HttpContext.Current.Server.UrlDecode(HttpContext.Current.Request.QueryString["token"]);
票数 3
EN

Stack Overflow用户

发布于 2016-02-11 16:42:46

你的错误在别的地方..。

我在一个.Net 4.0项目中创建了一个新的网页,并将其放在Page_Load中:

代码语言:javascript
复制
protected void Page_Load(object sender, EventArgs e)
{
    var queryString = HttpContext.Current.Request.QueryString;
    var token = queryString["token"];
    throw new Exception(token);
}

然后,通过访问这个URL来运行该页面,该URL与您在上面提供的查询字符串相匹配:

http://localhost:27151/test.aspx?token=%c9%90%04L%ef%bf%bdEA%ef%bf%bdU%ef%bf%bdi%ef%bf%bdc%3a%ef%bf%bd%ef%bf%bd%40Q%ef%bf%bd%1bn%ef%bf%bd%c3%b5%0fT%ef%bf%bd%ef%bf%bdh%ef%bf%bdm%ef%bf%bd%24tB%ef%bf%bd%ef%bf%bd%08%3b%ef%bf%bd%ef%bf%bd%ef%bf%bd%1b%ef%bf%bdZo%02

该页解码了token并将其显示在异常消息中,如下所示:

ɐL�EA�U�i�c:��@q�n�t��h�m�$tB��;����Zo

( URL正在编码二进制字符串,因此在打印实际字符串时,有些字符不会显示。)

如果您运行此程序,并且token实际打印“%C9%90%04L.”那么您的令牌可能已被双重编码。所有百分比符号都将替换为"%25“,因此您的URL如下所示:

http://localhost:27151/test.aspx?token=%25c9%2590%2504L%25ef%25bf%25bdEA%25ef%25bf%25bdU%25ef%25bf%25bdi%25ef%25bf%25bdc%253a%25ef%25bf%25bd%25ef%25bf%25bd%2540Q%25ef%25bf%25bd%251bn%25ef%25bf%25bd%25c3%25b5%250fT%25ef%25bf%25bd%25ef%25bf%25bdh%25ef%25bf%25bdm%25ef%25bf%25bd%2524tB%25ef%25bf%25bd%25ef%25bf%25bd......

由于您没有提到"%25",所以错误在代码中的其他地方。您认为正在使用的URL不是正在解码的URL。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35343146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档