我正在写一个程序。该程序的一部分涉及从XML文件中读取unicode值并在屏幕上显示该字符。
现在当我这样做的时候:
tbTester.Text = "\u597D";
它工作正常(tbTester是一个Winforms文本框)。但在另一种情况下,基本上我需要改变一个字符串以获得'\ u'然后是值。像这样:
szOut = szOut + "\u"+k.UnicodeID + " ";
对我来说,这些看起来并没有那么不同。只是现在它告诉我“\ u”是一个无法识别的转义序列。
现在我确实看到了这个问题并且双斜杠或'@'符号确实解决了这种特殊情况,只是现在文本框包含'\ u430B'(或其他)而不是第一个输出的字符我的例子。
答案 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。