【问题标题】:How to escape/ translate Encoding/chars via Regex and XSLT?如何通过 Regex 和 XSLT 转义/翻译编码/字符?
【发布时间】:2015-07-21 22:42:10
【问题描述】:

我需要一些帮助,了解如何实际修复这些在 xml 中作为特殊字符输出的编码。我正在尝试执行 powershell 脚本以通过服务器上的 SSH 连接使用平台创建证书以及预期的响应从它是一个干净的 xml 表单,但不幸的是这个特殊字符问题正在发生。我可能需要做一个 xslt 和正则表达式作为解决 xml 的解决方法:

     <output>
        <line index="1">(B)0[?7l[H[J[3;1H    Directory: D:\Certificatesdev[6;1HMode               </line>
        <line index="2">[24;1H                                                                                [24;1H-----------------------------------------------------------------------------[24;1H</line>
        <line index="3">[24;1H                                                                                [24;1HSign Certificate: Successful[24;1H</line>
        <line index="4">[24;1H                                                                                [24;1H-----------------------------------------------------------------------------[24;1H</line>
        <line index="5">[24;1H                                                                                [24;1HEvent Summary:[24;1H</line>
        <line index="6">[24;1H                                                                                [24;1H*Generate Sign Certificate File: Passed[24;1H</line>
        <line index="7">[24;1H                                                                                [24;1H</line>
        <line index="8">[24;1H                                                                                [23;1HGenerated D:\Certificatesdev\Folder\test.com-20150511-210523.[24;1Hcer[24;1H</line>
        <line index="9">[24;1H                                                                                [24;1H*Get Actual Certificate Expiry Date: Passed[24;1H</line>
        <line index="10">[24;1H                                                                                [24;1H*Copy to Shared Folder: Passed[24;1H</line>
        <line index="11">[24;1H                                                                                [24;1H</line>
        <line index="12">[24;1H                                                                                [23;1HFile Location: D:\Certificatesdev\Folder\test.com-20150511-21[24;1H0523[24;1H</line>
        <line index="13">[24;1H                                                                                [24;1H*Add to Certificate DB: Successful[24;1H</line>
        <line index="14">[24;1H                                                                                [24;1HCertificate Automation Completed Successfully[24;1H</line>
        <line index="15">[24;1H                                                                                [24;1H</line>
        <line index="16">[24;1H                                                                                [24;1H</line>
        <line index="17">[24;1H                                                                                [24;1H[?7h</line>
      </output>

请注意,额外的空格也不是预期的。我不太确定这是哪种编码。 请帮忙。谢谢

【问题讨论】:

  • 拜托,请提供一个小样本输入(2-3 行,对吗?)您需要的输入输出、您的代码、您当前的输出以及您对为什么它不起作用的想法。 [24;1H 看起来更像 ANSI 终端代码,可能由一些认为它处于终端模式的软件引入(我可能错了 ;-) ! ) 祝你好运。

标签: regex xml powershell xslt ansi


【解决方案1】:

我是来自 Bitvise 的 denis bider。我之所以注意到这一点,是因为我了解您在连接到 WinSSHD 或 Bitvise SSH 服务器版本时遇到的问题。

如果我理解正确,您连接到 SSH 服务器是为了从它接收 XML 类型的文件。看起来您连接到 SSH 服务器并检索数据的方式是使用 exec 请求或终端 shell 会话。

问题似乎是,当您在客户端接收数据时,您期望的是纯数据流,但您收到的是终端转义序列。这似乎是因为您的 SSH 客户端在连接到服务器时请求终端仿真。

解决此问题的最佳方法是:

  • 更改 SSH 客户端参数,使其在连接到服务器时不请求终端(例如 vt100 或 xterm),或者改为请求“哑”终端类型;

  • 或者,如果 SSH 客户端的类型不允许更改所请求的终端,则 SSH 服务器支持允许您强制它使用“哑”终端类型的设置(无转义序列),无论客户端请求什么。

如果您希望通过服务器端设置更改此设置,您可以在 SSH 服务器设置中找到它,在包含此用户设置的帐户或组设置条目中。设置的名称是“始终使用 'dumb' 伪终端”。

【讨论】:

  • 顺便说一句,我注意到当我勾选此选项时,ANSI 代码已被删除,但是当尝试登录 Putty 并执行一些命令时,它似乎被冻结或我无法输入任何内容腻子。 @denisbider
猜你喜欢
  • 1970-01-01
  • 2017-03-11
  • 2012-05-14
  • 1970-01-01
  • 2015-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-25
相关资源
最近更新 更多