带有unicode字符的无法识别的转义序列的问题

时间:2011-10-04 21:47:40

标签: c# unicode

我正在写一个程序。该程序的一部分涉及从XML文件中读取unicode值并在屏幕上显示该字符。

现在当我这样做的时候:

tbTester.Text = "\u597D";

它工作正常(tbTester是一个Winforms文本框)。但在另一种情况下,基本上我需要改变一个字符串以获得'\ u'然后是值。像这样:

szOut = szOut + "\u"+k.UnicodeID + " ";

对我来说,这些看起来并没有那么不同。只是现在它告诉我“\ u”是一个无法识别的转义序列。

现在我确实看到了这个问题并且双斜杠或'@'符号确实解决了这种特殊情况,只是现在文本框包含'\ u430B'(或其他)而不是第一个输出的字符我的例子。

2 个答案:

答案 0 :(得分:2)

当你像第一个例子一样编译代码时,编译的CIL代码实际上并不包含转义序列,而是包含字符本身。由于\u本身无效,因此会导致您收到的错误。

如果您将Unicode代码点作为整数,则可以通过强制转换将其转换为字符。 +运算符将处理其余的事情:

szOut = szOut + (char)k.UnicodeID + " ";

虽然在这种情况下我倾向于选择string.Format()

szOut = string.Format("{0}{1} ", szOut, (char)k.UnicodeID);

答案 1 :(得分:2)

尝试

szOut = szOut + (char)k.UnicodeID;

您不再需要转义该字符,因为它不在字符串中。你只需要将数字转换为它的字符equivelant。