c# - QueryString 将 %E1 转换为 %ufffd

标签 c# asp.net .net-3.5 query-string urlencode

我有一个像下面这样的 URL

http://mysite.com/default.aspx?q=%E1

%E1 应该是 á。当我从我的 C# 页面调用 Request.QueryString 时,我收到了

http://mysite.com/default.aspx?q=%ufffd

它对任何重音字符执行此操作。 %E1、%E3、%E9、%ED 等都作为 %ufffd 传递。正常编码值(%2D%2E%27)全部正确传递。

配置文件已经将全局化部分的responseEncoding/requestEncoding设置为UTF-8。

如何读取正确的值?

请注意,我不是生成查询字符串的人,我无法控制它。

最佳答案

虽然 á 确实被编码为 U+00E1 ,UTF-8编码(与URL参数相关)是0xC3 0xA1

您可以通过在重音字母上调用维基百科条目来验证,例如 http://en.wikipedia.org/wiki/%C3%81

U+FFFD是 Unicode 替换字符,表示给定的字符值无法在 Unicode 中正确编码。

更新:

你的问题有两点。

首先:如何将 Unicode 字符串编码为参数。使用

"?q=" + HttpUtility.UrlEncode(value)

第二:如何检索 Unicode 值?使用:

Request["q"]

如果您从您无法控制的其他来源收到 %E1,也许 RawUrl 可以帮助您。 (我没试过)

关于c# - QueryString 将 %E1 转换为 %ufffd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14327085/

相关文章:

c# - 用户 'IIS APPPOOL\myAppPoolName' 登录失败,无法为此添加新用户

c# - Activator.CreateInstance - 如何创建具有参数化构造函数的类的实例

c# - 按百分比从 ASP.NET 集合中选择项目

c# - 在 HoloLens 上以 30fps 访问 RGB 相机(或可定位相机)

c# - 如何重定向我的 mvc asp.net web 应用程序中除一个角色之外的所有页面?

c# - 我们可以在 .aspx.cs 页面中编写单元测试方法吗?

c# - 远程服务器返回错误 : (401) Unauthorized from LinkedIn

asp.net - 我需要什么来设置可以在没有 Visual Studio 的情况下构建 ASP.NET 项目的 Jenkins 构建服务器?

c# - 在您的单元测试项目中引用 System.Windows.Form 是一种不好的做法吗?

vb.net - 将通用列表转换为字符串数组