39

以下は、C#でユニコードを使用する方法であることを知っています

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; 

この状況をどのように処理しますか?

どんな助けでも素晴らしいでしょう!

4

3 に答える 3

61

char.ConvertFromUtf32関数を使用します。

string codePoint = "0D15";

int code = int.Parse(codePoint, System.Globalization.NumberStyles.HexNumber);
string unicodeString = char.ConvertFromUtf32(code);
// unicodeString = "ക"
于 2009-06-15T04:11:05.077 に答える
5

これは、arul と Adrian のソリューションを示す NUnit テストです。1 つのソリューションは文字列の入力で始まり、もう 1 つのソリューションでは、入力は文字だけで始まることに注意してください。

    [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]);
    }
于 2009-06-15T05:00:57.297 に答える
1

文字参照を使用して xml 内の文字をエスケープします。

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

c# の xml パーサー (少なくとも XElement.Load()) によって適切に読み取られます。

于 2015-11-17T16:15:33.903 に答える