C# 通过忽略编码进行字符串比较

C# 通过忽略编码进行字符串比较,c#,string,character-encoding,C#,String,Character Encoding,我有两条线 string one = "Montr�al"; string two = "Montréal"; 需要进行什么样的字符串比较,或者在这两个字符串之间进行字符串比较以使它们彼此相等。我累了 if(one.equals(two)){ //true } 也累了 if(String.equals(one,two, StringComparison.InvariantCultureIgnoreCase)){ //true } 甚至厌倦了字符串。比较方法,它们似乎都失败了。如何使这两个

我有两条线

string one = "Montr�al";
string two = "Montréal";
需要进行什么样的字符串比较,或者在这两个字符串之间进行字符串比较以使它们彼此相等。我累了

if(one.equals(two)){
 //true
}
也累了

if(String.equals(one,two, StringComparison.InvariantCultureIgnoreCase)){
//true
}

甚至厌倦了
字符串。比较
方法,它们似乎都失败了。如何使这两个字符串彼此相等。

首先将它们转换为相同的编码。如果
字符串2
为utf,则尝试

string one = Encoding.UTF8.GetString(Encoding.ASCII.GetBytes("Montr�al"));
然而,
“Montr�al“
必须直接从源代码中读取,而不是在代码编辑器中编写。

类程序
class Program
{
    static void Main(string[] args)
    {
        string one = "Montr�al";
        string two = "Montréal";

        one = Translate(one);
        two = Translate(two);

        if (string.Equals(one, two, StringComparison.InvariantCultureIgnoreCase))
        {
            Console.WriteLine("Equal");
        }
        Console.ReadLine();
    }


    static string Translate(string input)
    {
        var output = new char[input.Length];
        for (int i = 0; i < input.Length; i++)
        {
            var charCode = (int) input[i];
            if (charCode == 65533) // char �
                output[i] = (char)233; // é
            else
                output[i] = input[i];
        }
        return new string(output);
    }
}
{ 静态void Main(字符串[]参数) { string one=“Montr�al”; 字符串2=“Montréal”; 一=翻译(一); 二=翻译(二); if(string.Equals(一,二,StringComparison.InvariantCultureIgnoreCase)) { 控制台。写入线(“相等”); } Console.ReadLine(); } 静态字符串转换(字符串输入) { var输出=新字符[input.Length]; for(int i=0;i
如果除了
é
之外,其他字母丢失了怎么办?