2009-06-15 14 views
33

So che segue è il modo per utilizzare unicode in C#Ottenere stringa Unicode dal suo codice - C#

string unicodeString = "\u0D15"; 

Nella mia situazione, non sarà possibile ottenere il codice di carattere (0D15) al momento della compilazione. Ottengo questo da un file XML in fase di esecuzione. Mi chiedo come posso convertire questo codice in stringa unicode? Ho provato il seguente

// 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; 

Come posso gestire questa situazione?

Qualsiasi aiuto sarebbe fantastico!

risposta

49

Si desidera utilizzare la funzione char.ConvertFromUtf32.

string codePoint = "0D15"; 

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

mostrando nuovamente Microsoft non conosce la differenza tra le codifiche di testo effettive e unicode stesso ... – Nyerguds

+0

Nota che verrà generata quando si passa un surrogato UTF-16. – CodesInChaos

4

Ecco un test di NUnit mostra Arul e la soluzione di Adrian - notare che una soluzione inizia con l'ingresso in una stringa, mentre con l'altra soluzione l'ingresso inizia in appena 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

fuga il personaggio del XML utilizzando un character reference:

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

Si otterrà leggere correttamente XML Parser 's C# (almeno XElement.Load()).

Problemi correlati