Si sta specificando di confrontare le stringhe utilizzando le regole di confronto della cultura invariante. Evidentemente, nella cultura invariante, le due stringhe non sono considerate uguali.
È possibile confrontare in maniera specifica per la cultura con String.Compare e fornendo la cultura per la quale si desidera confrontare le stringhe:
if(String.Compare("Île", "Ile", new CultureInfo("fr-FR"), CompareOptions.None)==0)
Si prega di notare che nella cultura francese, quelle corde sono anche considerato diverso. Ho incluso l'esempio per mostrare che è la cultura che definisce le regole di ordinamento. Potresti riuscire a trovare una cultura adatta alle tue esigenze o crearne una personalizzata con le regole di confronto necessarie, ma probabilmente non è ciò che desideri.
Per un buon esempio di normalizzazione della stringa in modo che non ci siano accenti, have a look at this question. Dopo aver normalizzato la stringa, sarai in grado di confrontarli e considerarli uguali. Questo probabilmente sarebbe il modo più semplice per implementare la tua richiesta.
Modifica
E non è solo il personaggio che che ha questo comportamento nel InvariantCulture, questa affermazione ritorna anche falsa:
String.Equals("Ilê", "Ile", StringComparison.InvariantCultureIgnoreCase)
Il quadro fa la cosa giusta - quei personaggi sono in realtà diverse (ha un significato diverso) nella maggior parte delle culture e quindi non dovrebbero essere considerati uguali.
Appena provato, restituisce +1. – Bryan
Anche se ha funzionato, mi sembra strano che il problema sia specifico per quel personaggio. – Bryan
@Bryan: 'Î' è U + 00CE,' I' è U + 0049, sono totalmente diversi. – kennytm