如何使用c#将非ascii字符转换为url的ascii字符?

时间:2018-05-25 14:06:41

标签: c# asp.net

这些字符将用于网站网址。 字符必须只包含a-z和0-9。

我尝试使用Normalize但没有成功。

实施例

/københavn> / KOEBENHAVN
/köln> /科隆
/ k'ton> /千吨
/привет> (失踪)
/北京市> (缺失)

1 个答案:

答案 0 :(得分:0)

听起来你想要“音译”到基本的拉丁语(有时称为ASCII),特别是罗马化。

一个非常全面的图书馆必须知道每种语言的每个剧本中的每个单词或字母模式。大多数人并不那么雄心勃勃,而是在“一两个字母”的背景下工作,将一种语言的规则应用于所有人。您可能需要修补数据(输入或输出)以进行微调。

NuGet包Unidecode.NET(以及,对于demo,MSTest.Framework)。

Assert.AreNotEqual("koebenhavn",   "københavn".Unidecode());
Assert.AreEqual(   "kobenhavn",    "københavn".Unidecode());
Assert.AreEqual(   "koln",         "köln"     .Unidecode());
Assert.AreNotEqual("kton",         "k'ton"    .Unidecode());
Assert.AreEqual(   "k'ton",        "k'ton"    .Unidecode());
Assert.AreEqual(   "privet",       "привет"   .Unidecode());
Assert.AreEqual(   "Bei Jing Shi ","北京市"   .Unidecode());