解码使用 JS encodeURIComponent 函数编码的参数



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

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

例如,如果字符串是"弗朗索瓦+安娜"

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

在服务器上

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

引发"无效的 URI:字符串中存在无效序列"异常。如果我替换字符串中的扩展字符,它被解码为"弗朗索瓦 + 安娜"

但是,如果我使用

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

外语字符正确解码,但编码的+更改为空格;"弗朗索瓦   ·安娜"。

URL 一开始就

没有正确编码。 previewImage.ashx?id=1&text=Fran%25E7ois%2520%2B%2520Anna不是正确的 URL 编码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"]调用检索结果。 无需做任何特别的事情。

最新更新