>我有一个应用程序,它获取用户输入的文本并将其作为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 )
外语字符正确解码,但编码的+更改为空格;"弗朗索瓦 ·安娜"。
没有正确编码。 previewImage.ashx?id=1&text=Fran%25E7ois%2520%2B%2520Anna
不是正确的 URL 编码François + Anna
我相信正确的编码应该是previewImage.ashx?id=1&text=Fran%E7ois+%2B+Anna
或previewImage.ashx?id=1&text=Fran%E7ois%20%2B%20Anna
修复编码后,您应该能够通过简单的Context.Request.QueryString["text"]
调用检索结果。 无需做任何特别的事情。