2011-02-10 13 views
5

Considerate questo confronto:C#, Cultura e Java Locale mancata corrispondenza

String a = "\u00C4";  // "LATIN CAPITAL LETTER A WITH DIAERESIS" 
String b = "\u0041\u0308"; // "LATIN CAPITAL LETTER A" and "COMBINING DIAERESIS" 

Confrontando queste in C# cultura danese, restituisce false:

Thread.CurrentThread.CurrentCulture = new CultureInfo("da-DK", false); 
Console.WriteLine(a.Equals(b, StringComparison.CurrentCulture)); // false 

Confrontando questi in locale Java danese, restituisce true:

Ho elencato tutte le lingue/culture in entrambi gli ambienti e ho confermato che quelle giuste sono sel ette. Mi sto perdendo qualcosa? Qual è la differenza?

risposta

4

non riesco a riprodurre i risultati utilizzando .NET 4:

using System; 
using System.Globalization; 
using System.Threading; 

public class Test 
{ 
    static void Main() 
    { 
     String a = "\u00C4"; 
     String b = "\u0041\u0308"; 

     Thread.CurrentThread.CurrentCulture = new CultureInfo("da-DK", false); 
     Console.WriteLine(a.Equals(b, StringComparison.CurrentCulture)); 
    } 
} 

Questo programma stampa "vero" per me. Lo stesso identico programma stampa "False" per te?

+2

Sì, sto usando .NET 2.0. Ho provato 3.0, 3.5 e ancora falso. Il passaggio a 4.0 produce vero. Non fantastico – User

+0

Non è male. Tutto quello che devi fare è aggiornare alla versione più recente per risolvere il tuo problema. Questo è buono. –

Problemi correlati