【发布时间】:2013-02-13 22:59:28
【问题描述】:
我有一个问题,如果我将硬编码字符串 \x1B|200uF 作为参数传递,命令会正确接受它。
但是,当我将 XML 元素中的相同值检索到新的字符串变量中时,我得到以下值:\\x1B|200uF
如您所见,有一个额外的转义序列。
所以总结一下问题:
using (XmlReader xmlReader = XmlReader.Create(@"PosPrinter.xml"))
{
while (xmlReader.Read())
{
if (xmlReader.NodeType == XmlNodeType.Element)
{
switch (xmlReader.Name)
{
case "PosPrinter":
_printer.LogicalName = xmlReader.GetAttribute("LogicalName");
break;
case "FeedReceiptCommand":
_printer.FeedReceiptCommand = xmlReader.GetAttribute("value");
break;
我将值检索到我的“FeedReceiptCommand”字符串中,上面提到的值以\x1B|200uF 的形式存储在xml 中,但以\\x1B|200uF 的形式检索到字符串中,并在开头带有额外的转义序列。
然后我使用字符串变量 FeedReceiptCommand 调用我的命令:
_posPrinter.PrintNormal(PrinterStation.Receipt, PrinterSettings.FeedReceiptCommand );
但是由于额外的转义序列,命令没有执行。
但是如果我用硬编码的值调用相同的命令:
_posPrinter.PrintNormal(PrinterStation.Receipt, "\x1B|200uF");
...然后命令执行成功..
\x1B|200uF 的值是使用 Microsoft.PointOfService 发送到 Epson TM-T88V 打印机的 ESC 命令,我认为 '\x' 代表十六进制,而 1B 是十六进制值..
我试图通过使用“Trim”、“Substring”来消除额外的转义序列,甚至使用 foreach 循环来循环字符串中的每个字符以构建一个新字符。我也试过 stringbuilder。
但我在这里的某个地方漏掉了重点。
因此,如果我可以通过变量代替\x1B|200uF,我们将不胜感激
【问题讨论】:
-
如果将值打印出来会得到什么?我确定`\`只是一个显示的东西。