Domanda

So che segue è il modo per utilizzare unicode in C #

string unicodeString = "\u0D15";

Nella mia situazione, non sarà possibile ottenere il codice di carattere ( 0D15 ) al momento della compilazione. Ho questa da un file XML in fase di esecuzione. Mi chiedo come faccio a convertire il codice a 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 faccio a gestire questa situazione?

Qualsiasi aiuto sarebbe grande!

È stato utile?

Soluzione

Si desidera utilizzare il char.ConvertFromUtf32 la funzione.

string codePoint = "0D15";

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

Altri suggerimenti

Ecco un test di NUnit che mostra Arul e la soluzione di Adrian - di 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]);
    }

Escape il carattere nella XML utilizzando un riferimento di carattere :

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

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top