2009-06-15 15 views
33

Sé que sigue es la manera de utilizar Unicode en C#Conseguir cadena Unicode de su código - C#

string unicodeString = "\u0D15"; 

En mi situación, no voy a conseguir el código de caracteres (0D15) en tiempo de compilación. Lo obtengo de un archivo XML en tiempo de ejecución. Me pregunto cómo puedo convertir este código a cadena Unicode? Intenté lo siguiente

// will not compile as unrecognized escape sequence 
string unicodeString = "\u" + codeFromXML; 

// will compile, but just concatenates u with the string got from XML file. 
string unicodeString = "\\u" + codeFromXML; 

¿Cómo manejo esta situación?

¡Cualquier ayuda sería genial!

Respuesta

49

Desea utilizar la función char.ConvertFromUtf32.

string codePoint = "0D15"; 

int code = int.Parse(codePoint, System.Globalization.NumberStyles.HexNumber); 
string unicodeString = char.ConvertFromUtf32(code); 
// unicodeString = "ക" 
+0

mostrando de nuevo que Microsoft no conoce la diferencia entre las codificaciones de texto reales y el propio unicode ... – Nyerguds

+0

Tenga en cuenta que arrojará cuando lo pase un sustituto UTF-16. – CodesInChaos

4

He aquí un ensayo que muestra NUnit arul y solución de Adrian - notar que una solución comienza con la entrada en una cadena, mientras que con la otra solución la entrada comienza en tan sólo un char.

[Test] 
    public void testConvertFromUnicode() 
    { 

     char myValue = Char.Parse("\u0D15"); 
     Assert.AreEqual(3349, myValue); 

     char unicodeChar = '\u0D15'; 
     string unicodeString = Char.ConvertFromUtf32(unicodeChar); 
     Assert.AreEqual(1, unicodeString.Length); 
     char[] charsInString = unicodeString.ToCharArray(); 
     Assert.AreEqual(1, charsInString.Count()); 
     Assert.AreEqual((int) '\u0D15', charsInString[0]); 
    } 
1

Escapar el carácter en el xml utilizando un character reference:

<Config value="&#x0D15;" /> 

Se obtendrá leer correctamente las Analizador XML de C# (al menos XElement.Load()).