39

我知道以下是在 C# 中使用 unicode 的方法

string unicodeString = "\u0D15";

在我的情况下,我不会在编译时获得字符代码( 0D15 )。我在运行时从 XML 文件中得到它。我想知道如何将此代码转换为 unicode 字符串?我尝试了以下

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

这是一个 NUnit 测试,显示了 arul 和 Adrian 的解决方案 - 请注意,一个解决方案以字符串中的输入开始,而另一种解决方案的输入仅以字符开始。

    [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 回答