将特殊字符转换为正常

我需要一种方法来转换像这样的特殊字符:

Helloæ

正常人物。 所以这个词最终会成为Helloae 。 到目前为止,我已经尝试过HttpUtility.Decode ,或者将UTF8转换为win1252的方法,但没有任何效果。 是否有一些简单而通用的东西可以完成这项工作?

谢谢。

编辑

我尝试使用OC上的post来实现这两种方法。 这是方法:

 public static string ConvertUTF8ToWin1252(string _source) { Encoding utf8 = new UTF8Encoding(); Encoding win1252 = Encoding.GetEncoding(1252); byte[] input = _source.ToUTF8ByteArray(); byte[] output = Encoding.Convert(utf8, win1252, input); return win1252.GetString(output); } // It should be noted that this method is expecting UTF-8 input only, // so you probably should give it a more fitting name. private static byte[] ToUTF8ByteArray(this string _str) { Encoding encoding = new UTF8Encoding(); return encoding.GetBytes(_str); } 

但它没有奏效。 字符串保持不变。

请参阅: .NET音译库是否存在?

UnidecodeSharpFork

用法:

 var result = "Helloæ".Unidecode(); Console.WriteLine(result) // Prints Helloae 

æae之间没有直接映射,它们是完全不同的unicode代码点。 如果你需要这样做,你很可能需要编写一个函数,将有问题的代码点映射到你想要的字符串。

根据评论,您可能需要采取两阶段方法:

  1. 删除变音符号并将每个链接的字符组合为可能的副本
  2. 将任何未组合的字符映射到备用字符串
 switch(badChar){ case 'æ': return "ae"; case 'ø': return "oe"; // and so on }