我正在尝试构建从httpcontext动态生成的站点标题,但我发现当url包含特殊字符(如ß时)时会出现问题,这会导致标题包含错误的字符,例如fußball转换为fu%C3%9Fball。现在我把我的标题按这样的顺序存储:

string[] customSEOTitle = HttpContext.Current.Request.Url.AbsolutePath
   .Split('/')
   .Where(s => !string.IsNullOrWhiteSpace(s))
   .Distinct()
   .Select(s => CultureInfo.CurrentCulture.TextInfo.ToTitleCase(s))
   .ToArray();

问题是绝对路径在url实际fu%C3%9Fball时返回fußball。我看到RawUrl得到了正确的字符,但它也接受了我不想要的查询字符串。有没有任何通用和直接的方法来实现这一点,或者我必须编写扩展方法条带查询字符串?

最佳答案

您可能正在寻找的是urlencode和urldecode方法。
MSDN | HttpServerUtility.UrlDecode Method (String)
不确定您使用的.NET版本,请参阅此处的详细讨论。
Replacement for System.Web.HttpUtility.UrlEncode/UrlDecode ASP.NET 5

关于c# - 从HTTPContext获取正确的编码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37656324/

10-11 05:59