从代码中获取unicode字符串-C#
我知道下面是在C中使用unicode的方法# 在我的情况下,我不会在编译时获取字符代码(0D15)。我在运行时从一个XML文件中得到这个。我想知道如何将此代码转换为unicode字符串?我尝试了以下方法从代码中获取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
// 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="ക" />