0

Web フォームからフィールドを取得し、入力をデータベースに保存しようとしています。現在、非改行スペースを「+」記号に置き換えています(つまり、「Test 2」=「Test + 2」)。以下に示すように、文字列の + を置き換えて「」に置き換えるハックがあります。 "。

私はこれが短期的な解決策であることを知っています。私は '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;
}
4

1 に答える 1

1

求めている特定の問題を解決するには、http://msdn.microsoft.com/en-us/library/system.web.httputility.urldecode.aspx で UrlDecode を使用しますpostedValues

しかし、実際にはRequest. を使用するだけRequest.Paramsで、値はすでに解析され、そこでデコードされます。

于 2012-11-12T19:25:17.010 に答える