Получение строки юникода из ее кода - С#

Я знаю, что следующим образом можно использовать unicode в С#.

string unicodeString = "\u0D15";

В моей ситуации я не получу код символа (0D15) во время компиляции. Я получаю это из файла XML во время выполнения. Интересно, как мне преобразовать этот код в строку юникода? Я попробовал следующее

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

Как мне справиться с этой ситуацией?

Любая помощь будет здорово!


person Navaneeth K N    schedule 15.06.2009    source источник


Ответы (3)


Вы хотите использовать функцию char.ConvertFromUtf32.

string codePoint = "0D15";

int code = int.Parse(codePoint, System.Globalization.NumberStyles.HexNumber);
string unicodeString = char.ConvertFromUtf32(code);
// unicodeString = "ക"
person arul    schedule 15.06.2009
comment
снова показывает, что Microsoft не знает разницы между фактическими кодировками текста и самим юникодом... - person Nyerguds; 18.03.2016
comment
Обратите внимание, что при передаче будет выдан суррогат UTF-16. - person CodesInChaos; 23.03.2016

Вот тест NUnit, показывающий решение arul и Адриана — обратите внимание, что одно решение начинается с ввода в виде строки, а в другом решении ввод начинается только с символа.

    [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]);
    }
person dplante    schedule 15.06.2009

Экранируйте символ в xml, используя ссылку на символ:

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

Он будет правильно прочитан синтаксическим анализатором С# xml (по крайней мере, XElement.Load()).

person Jimmy    schedule 17.11.2015