web-dev-qa-db-fra.com

Obtenir une chaîne Unicode à partir de son code - C #

Je sais que la manière suivante est d'utiliser unicode en C #

string unicodeString = "\u0D15";

Dans ma situation, je n'obtiendrai pas le code de caractère (D15) au moment de la compilation. Je l'obtiens à partir d'un fichier XML lors de l'exécution. Je me demande comment convertir ce code en chaîne unicode? J'ai essayé ce qui suit

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

Comment gérer cette situation?

Toute aide est la bienvenue!

37
Navaneeth K N

Vous souhaitez utiliser la fonction char.ConvertFromUtf32 .

string codePoint = "0D15";

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

Voici un test NUnit montrant arul et la solution d'Adrian - notez qu'une solution commence par une entrée dans une chaîne, tandis qu'avec l'autre solution, l'entrée commence par un caractère.

    [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]);
    }
5
dplante

Échapper le caractère dans le xml en utilisant un référence de caractère :

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

Il sera lu correctement par l'analyseur xml de c # (au moins XElement.Load ()).

1
Jimmy