Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从代码中获取unicode字符串-C#_C#_Unicode_String Concatenation - Fatal编程技术网

从代码中获取unicode字符串-C#

从代码中获取unicode字符串-C#,c#,unicode,string-concatenation,C#,Unicode,String Concatenation,我知道下面是在C中使用unicode的方法# 在我的情况下,我不会在编译时获取字符代码(0D15)。我在运行时从一个XML文件中得到这个。我想知道如何将此代码转换为unicode字符串?我尝试了以下方法 // will not compile as unrecognized escape sequence string unicodeString = "\u" + codeFromXML; // will compile, but just concatenates u with the s

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

在我的情况下,我不会在编译时获取字符代码(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; 
我如何处理这种情况

任何帮助都会很好

您想使用该函数

string codePoint = "0D15";

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

这里有一个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]);
    }

使用以下命令转义xml中的字符:



它将被c#的xml解析器(至少是XElement.Load())正确读取。

再次表明Microsoft不知道实际文本编码和unicode本身之间的区别……请注意,当您传递UTF-16代理时,它将抛出。
    [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]);
    }
<Config value="&#x0D15;" />