Obtenir une chaîne Unicode à partir de son code - C #
-
13-09-2019 - |
Question
Je sais que suivre est le moyen d'utiliser Unicode en C #
string unicodeString = "\u0D15";
Dans ma situation, je n'obtiendrai pas le code du caractère (0d15) au moment de la compilation. Je l'obtiens à partir d'un fichier XML au moment 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!
La solution
Vous souhaitez utiliser le char.convertfromutf32 fonction.
string codePoint = "0D15";
int code = int.Parse(codePoint, System.Globalization.NumberStyles.HexNumber);
string unicodeString = char.ConvertFromUtf32(code);
// unicodeString = "ക"
Autres conseils
Voici un test Nunit montrant la solution d'Arul et Adrian - notez qu'une solution commence par l'entrée dans une chaîne, tandis qu'avec l'autre solution, l'entrée commence dans 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]);
}
Échappez au caractère dans le XML en utilisant un référence du personnage:
<Config value="ക" />
Il sera lu correctement par l'analyseur XML de C # (au moins xElement.load ()).