C# 将特殊字符转换为普通字符

C# 将特殊字符转换为普通字符,c#,asp.net-mvc,character-encoding,special-characters,C#,Asp.net Mvc,Character Encoding,Special Characters,我需要一种转换特殊字符的方法,如下所示: Helloæ 到普通字符。所以这个词最终会变成Helloae。到目前为止,我已经尝试了HttpUtility.Decode,或者一种将UTF8转换为win1252的方法,但是没有任何效果。有什么简单通用的方法可以完成这项工作吗 多谢各位 编辑 我尝试过使用OC上的帖子实现这两种方法。方法如下: public static string ConvertUTF8ToWin1252(string _source) { Encoding utf8 = n

我需要一种转换特殊字符的方法,如下所示:

Helloæ

到普通字符。所以这个词最终会变成Helloae。到目前为止,我已经尝试了
HttpUtility.Decode
,或者一种将UTF8转换为win1252的方法,但是没有任何效果。有什么简单通用的方法可以完成这项工作吗

多谢各位

编辑

我尝试过使用OC上的帖子实现这两种方法。方法如下:

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);
}

但它没有起作用。字符串保持不变。

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

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

  • 删除每个链接的变音符号和组合字符,以找到可能的副本
  • 将未合并的所有剩余字符映射到备用字符串
  • 见:

    用法:

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

    可能的复制可能只是通过带有开关的函数自己实现inside@James该解决方案不适用于字符串
    Helloæ
    。是的,我在问题中尝试了两种类似的方法,但它不起作用。仍在寻找一种方法,如果您碰巧知道,请随时提供。您的评论“应该注意,此方法仅期望UTF-8输入”不适用,因为您的函数不接受字节数组,而是字符串对象作为输入。字符串对象独立于任何编码。一旦你将一个UTF8字节数组转换成一个字符串,它将和任何其他字符串一样。是的,这将是一个解决方案。我必须承认我不知道怎么做。我会更新我的帖子来展示我到目前为止所做的事情(这不起作用)。
    æ
    是由字母
    ae
    @James构成的。实际上不是,请查阅相关的Unicode,这是一个独特的字符U+00E6,因此没有组合字符。我不知道如何执行第二步。你能给我引路吗?好的,我想我明白你的意思了,大部分评论都指向这个解决方案。我想我会实现类似的东西。如果行得通,我会把你接回来。在我去查夏普福克的路上。这将是一个很好的工具。它是一个基于Perl和Python中其他表的编译的音译表。这似乎是更好的解决方案,因为它消除了选择要音译的字符的负担。我不确定这方面的许可证,所以,在使用之前,您可能想查看一下。是的:)正是我想要的。非常感谢。
    var result = "Helloæ".Unidecode();
    Console.WriteLine(result) // Prints Helloae