我正在从webform中获取字段并尝试将输入保存到数据库中。它正在用一个'+'符号替换一个不间断的空格(即“Test 2”=“Test + 2”)正如您将在下面看到的那样,我有一个hack从字符串中替换+并将其替换为“ ”
我知道这是一个短边的解决方案。我原以为'Encoding.GetEncoding(“UTF-8”)会照顾到这一点。我想找到一种可以解释任何类型字符的编码。请参阅以下代码:
private List<Alias> GetAliasesFromPost()
{
List<Alias> aliases = new List<Alias>();
using (StreamReader sr = new StreamReader(Request.InputStream, Encoding.GetEncoding("UTF-8")))
{
string[] postedValues = sr.ReadLine().Split('&');
for (int i = 0; i < postedValues.Length; i++)
{
if (postedValues[i].StartsWith("urlAlias="))
{
Alias alias = new Alias();
string active = postedValues[i - 1].Replace("active=", string.Empty);
alias.Active = string.Compare(active, "on", true) == 0;
alias.UrlAlias = postedValues[i].Replace("urlAlias=", string.Empty);
alias.Notes = postedValues[i + 1].Replace("notes=", string.Empty).Replace("+", " ");
int Id = 0;
Int32.TryParse(postedValues[i + 2].Replace("id=", string.Empty), out Id);
alias.Id = Id;
aliases.Add(alias);
}
}
}
return aliases;
}
答案 0 :(得分:1)
要解决您提出的具体问题,请在postedValues
http://msdn.microsoft.com/en-us/library/system.web.httputility.urldecode.aspx
但你真的不应该解析Request
。只需使用Request.Params
,就可以在那里解析和解码这些值。