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

本文关键字:转义序列 问题 识别 字符 unicode | 更新日期: 2023-09-27 18:10:30

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

当我这样做的时候:

tbTester.Text = "'u597D";

它工作良好(tbTester是一个Winforms文本框)。但在另一种情况下,基本上我需要改变一个字符串,让它有''u',然后是值。这样的:

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

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

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

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

当您编译像第一个示例那样的代码时,编译的CIL代码实际上不包含转义序列,而是包含字符本身。因为'u本身是无效的,这会导致您得到的错误。

如果Unicode代码点是整数,可以通过强制转换将其转换为字符。+运算符将负责其余部分:

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

尽管我倾向于在这样的情况下使用string.Format():

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

Try

szOut = szOut + (char)k.UnicodeID;

您不再需要转义该字符,因为它不在字面值字符串中。你只需要把数字转换成它对应的字符。