unicode字符无法识别转义序列的问题
本文关键字:转义序列 问题 识别 字符 unicode | 更新日期: 2023-09-27 18:10:30
我在写程序。该程序的一部分涉及从XML文件中读取unicode值并在屏幕上显示该字符。
当我这样做的时候:
tbTester.Text = "'u597D";
它工作良好(tbTester是一个Winforms文本框)。但在另一种情况下,基本上我需要改变一个字符串,让它有''u',然后是值。这样的:
szOut = szOut + "'u"+k.UnicodeID + " ";
对我来说,这些看起来并没有什么不同。只是现在它告诉我,"'u"是一个无法识别的转义序列。
现在我确实查找了这个问题,双斜杠或'@'符号确实解决了这种特殊情况,只是现在文本框包含''u430B'(或其他)而不是在我的第一个例子中输出的字符。
当您编译像第一个示例那样的代码时,编译的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;
您不再需要转义该字符,因为它不在字面值字符串中。你只需要把数字转换成它对应的字符。