2011-02-10 13 views
5

Considere esta comparación:C# Cultura y Java Locale desajuste

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

Comparando estos en C# la cultura danesa, devuelve falso:

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

Comparando estos en Java danesa local, devuelve verdadero:

System.out.println(Collator.getInstance(new Locale("Danish (Denmark)").equals(a,b)); // true 

He enumerado todas las configuraciones regionales/culturas en ambos entornos y he confirmado que las correctas son sel ected. ¿Me estoy perdiendo de algo? ¿Qué pasa con la diferencia?

Respuesta

4

No puedo reproducir sus resultados utilizando .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)); 
    } 
} 

Ese programa imprime "true" para mí. ¿El mismo programa exacto imprime "False" para usted?

+2

Sí, estoy usando .NET 2.0. Intenté 3.0, 3.5 y sigo siendo falso. Cambiar a 4.0 produce verdadero. No genial. – User

+0

No está mal. Todo lo que tiene que hacer es actualizar a la última versión para solucionar su problema. Esto es bueno. –

Cuestiones relacionadas