Стоит рассмотреть еще одну вещь:
Если пользователь предоставляет строку, такую как 好听的音乐
, которую вы хотите преобразовать в понятный заголовок URL, вам следует рассмотреть возможность использования IdnMapping
Например:
string urlFriendlyTitle = Slugify(url);
public static string Slugify(string text)
{
IdnMapping idnMapping = new IdnMapping();
text = idnMapping.GetAscii(text);
text = RemoveAccent(text).ToLower();
// Remove all invalid characters.
text = Regex.Replace(text, @"[^a-z0-9\s-]", "");
// Convert multiple spaces into one space
text = Regex.Replace(text, @"\s+", " ").Trim();
// Replace spaces by underscores.
text = Regex.Replace(text, @"\s", "_");
return text;
}
public static string RemoveAccent(string text)
{
byte[] bytes = Encoding.GetEncoding("Cyrillic").GetBytes(text);
return Encoding.ASCII.GetString(bytes);
}
Без этого 好听的音乐
будет преобразован в string.Empty
. При этом xn--fjqr6lw2ek78az68a
, который punycode