C#Convert.ToChar()上奇怪的反斜杠

C#Convert.ToChar()上奇怪的反斜杠,c#,unicode,C#,Unicode,我正在尝试将xml字符实体转换为C字符 我不知道它为什么在Convert.Char行失败。即使调试器将charString显示为“\\\\x2081”,它实际上是“\x2081”,这是一个有效的Unicode字符。例外情况是字符太多。ToChar(字符串)的文档非常可读: 将指定字符串的第一个字符转换为Unicode字符 此外: FormatException–值的长度不是1 它不会将角色的十六进制表示形式转换为所述角色。它将使用一个字符串并将该字符返回给您。与执行s[0]相同 你想要的是: s

我正在尝试将xml字符实体转换为C字符


我不知道它为什么在Convert.Char行失败。即使调试器将charString显示为
“\\\\x2081”
,它实际上是
“\x2081”
,这是一个有效的Unicode字符。例外情况是字符太多。

ToChar(字符串)的文档非常可读:

将指定字符串的第一个字符转换为Unicode字符

此外:

FormatException–值的长度不是1

它不会将角色的十六进制表示形式转换为所述角色。它将使用一个字符串并将该字符返回给您。与执行
s[0]
相同

你想要的是:

string hex = "₁".Replace("&#x", "").Replace(";", "");
char c = (char)Convert.ToInt32(hex, 16);

ToChar(string)
的文档非常可读:

将指定字符串的第一个字符转换为Unicode字符

此外:

FormatException–值的长度不是1

它不会将角色的十六进制表示形式转换为所述角色。它将使用一个字符串并将该字符返回给您。与执行
s[0]
相同

你想要的是:

string hex = "₁".Replace("&#x", "").Replace(";", "");
char c = (char)Convert.ToInt32(hex, 16);
Convert.ToChar(value)
with value是一个长度为1的字符串。但是
charString
的长度大于1。 似乎
“₁;”
是Unicode十六进制字符代码()。所以你必须这样做:

string charString = "₁".Replace("&#x", "").Replace(";", "");
char c = (char)Convert.ToInt32(charString , NumberStyles.HexNumber);
注意:它是一个HTML实体(十六进制),下标为1(见上面的链接)

Convert.ToChar(value)
和value是一个长度为1的字符串。但是
charString
的长度大于1。 似乎
“₁;”
是Unicode十六进制字符代码()。所以你必须这样做:

string charString = "₁".Replace("&#x", "").Replace(";", "");
char c = (char)Convert.ToInt32(charString , NumberStyles.HexNumber);

注意:它是
下标一的HTML实体(十六进制)
(请参见上面的链接^ ^)

您应该只有一个字符您应该只有一个字符谢谢。我没有意识到托卡尔只对一个角色有效。从现在起,我应该更好地阅读文档。NET文档非常好,几乎所有方法都有示例代码。谢谢。我没有意识到托卡尔只对一个角色有效。从现在起,我应该更好地阅读文档。NET文档非常好,几乎所有方法都有示例代码。