Pergunta

Eu sei que a seguir é a maneira de usar o Unicode em C#

string unicodeString = "\u0D15";

Na minha situação, não vou obter o código do personagem (0d15) no momento da compilação. Recebo isso de um arquivo XML no tempo de execução. Gostaria de saber como converter este código para unicode string? Eu tentei o seguinte

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

Como faço para lidar com essa situação?

Qualquer ajuda seria ótimo!

Foi útil?

Solução

Você quer usar o char.convertfromutf32 função.

string codePoint = "0D15";

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

Outras dicas

Aqui está um teste de Nunst mostrando a solução de Arul e Adrian - observe que uma solução começa com a entrada em uma string, enquanto com a outra solução a entrada inicia apenas um 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]);
    }

Escapar do personagem no XML usando um Referência de personagem:

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

Ele será lido corretamente pelo analisador XML de C#(pelo menos xelement.load ()).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top