解码使用JS encodeURIComponent函数

时间:2015-04-28 15:45:35

标签: javascript c# asp.net .net encoding

我有一个应用程序,它接受用户输入的文本并将其作为URL的一部分传递给服务器,以便可以呈现包含文本的图像。 URL参数使用encodeURIComponent函数进行编码。

我遇到的问题是,如果用户输入包含+或外来字符的文本,我无法在服务器端正确解码字符串。

例如,如果字符串是“François+ Anna”

编码后的网址是previewImage.ashx?id = 1& text = Fran%25E7ois%2520%2B%2520Anna

在服务器上

Uri.UnescapeDataString( Context.Request.QueryString["text"] )

引发“无效的URI:字符串中存在无效序列。”例外。如果我从字符串中替换扩展字符,它将被解码为“Francois + Anna”

但是,如果我使用

HttpUtility.UrlDecode(
    Context.Request.QueryString["text"], System.Text.UTF8Encoding.UTF7 )

外部字符被正确解码但编码+被改变为空格; “弗朗索瓦安娜”。

1 个答案:

答案 0 :(得分:3)

首先未对URL进行正确编码。 previewImage.ashx?id=1&text=Fran%25E7ois%2520%2B%2520Anna不是François + Anna

的正确网址编码

我认为正确的编码应该是previewImage.ashx?id=1&text=Fran%E7ois+%2B+AnnapreviewImage.ashx?id=1&text=Fran%E7ois%20%2B%20Anna

修复编码后,您应该能够通过简单的Context.Request.QueryString["text"]调用检索结果。无需做任何特别的事情。