首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell Remedy ARQ文件,可能存在编码问题

Powershell Remedy ARQ文件,可能存在编码问题
EN

Stack Overflow用户
提问于 2015-11-18 02:08:54
回答 1查看 190关注 0票数 5

我在编辑文件时遇到问题。它是由票务系统BMC Remedy制作的.ARQ文件。

我可以在notepad++中打开它,编辑它,一切都很好。然而,当我尝试使用PowerShell编辑它时,事情变得一团糟。尽管它在视觉上看起来是一样的,但应用程序读取它的方式不同。下面是我做过的一些测试,试图找出哪里出了问题。

测试1

代码语言:javascript
复制
get-content monitor.arq | set-content monitor2.arq

结果

代码语言:javascript
复制
Length Name
------ ----
  3578 monitor.arq
  3585 monitor2.arq 

基本上,它们的大小不同,并且monitor2.arq的功能与monitor.arq不同,但在notepad++中,它们在视觉上是相同的

测试2

我想这可能是一个编码问题,所以我尝试了一下。

代码语言:javascript
复制
$code = @("Unicode", "UTF7", "UTF8", "UTF32", "ASCII", "BigEndianUnicode", "Default", "OEM")
for ($a = 0; $a -lt $code.count; $a++) {
    Get-Content .\monitor.arq | Out-File -Encoding $code[$a] -FilePath ".\monitor$a-$($code[$a]).arq"
}

结果

代码语言:javascript
复制
Length Name                         
------ ----                         
  3578 monitor.arq                  
  7172 monitor0-Unicode.arq         
  4911 monitor1-UTF7.arq            
  3596 monitor2-UTF8.arq            
 14344 monitor3-UTF32.arq           
  3585 monitor4-ASCII.arq           
  7172 monitor5-BigEndianUnicode.arq
  3585 monitor6-Default.arq         
  3585 monitor7-OEM.arq  

没有一个看起来是正确的,也许我在这里找错了树,但这个文件中有一些纯文本,我想在不破坏整个文件的情况下编辑它。

我也尝试了一个文件流(许多代码,不包括),但它产生了相同的结果。

根据notepad++的ANSI

根据我在网上找到的几个脚本,它是ASCII

我可能正在做一些完全愚蠢的事情,或者对此了解不够多,无法完成这项工作。

任何帮助都是最好的。

通过评论帮助进行测试(感谢女士们先生们)

代码语言:javascript
复制
$content1=gc -Encoding byte monitor.arq
[System.Text.Encoding]::ASCII.GetString($content1) | out-file -Encoding ascii -FilePath .\monitor2.arq
$content2=gc -Encoding byte monitor2.arq
Compare-Object $content1 $content2

结果显示了哪些字符正在以我不想要的方式进行转换。

代码语言:javascript
复制
InputObject SideIndicator
----------- -------------
         63 =>           
         63 =>           
         63 =>           
         63 =>           
         13 =>           
         10 =>           
        201 <=           
        233 <=           
        233 <=           
        201 <=           

我知道的13和10是注释中讨论的换行符,它们被添加到文件的末尾,老实说,我不认为这会影响任何东西,因为它出现在end语句之后(这是一个宏文件,用于BMC补救)

然而,我担心的是201和233正在被转换为63。对如何阻止这种情况有什么想法吗?我打算在写文件之前简单地转换回byte[],但在这一点上,我无法区分63应该是201和那些应该是203的区别。

已解决

因此,在大家的帮助下,我找到了一个解决方案。我自己坚持不懈地相信它是ASCII是我做的事情,再加上评论中提到的换行。

代码语言:javascript
复制
$content1=gc -Encoding byte monitor.arq
[System.Text.Encoding]::default.GetString($content1) | out-file -Encoding default -FilePath .\monitor2.arq
$content2=gc -Encoding byte monitor2.arq
Compare-Object $content1 $content2 | format-table -AutoSize

不太确定谁应该发布来获得解决的信用,但感谢所有人

EN

回答 1

Stack Overflow用户

发布于 2015-11-19 20:20:36

代码语言:javascript
复制
$content1=gc -Encoding byte monitor.arq
[System.Text.Encoding]::default.GetString($content1) | out-file -Encoding default -FilePath .\monitor2.arq
$content2=gc -Encoding byte monitor2.arq
Compare-Object $content1 $content2 | format-table -AutoSize
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33764044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档