如何使用正确的编码进行读写?

时间:2018-09-24 10:04:31

标签: powershell encoding select-string

此脚本删除文本文件中包含某些字符串的行。 它在处理北欧字母方面存在问题。根据Firefox编码是

  

西欧

$filter  = '.\*.alm'
$pattern = "ASE|MBE|MB1|Network interfaces|Handle|default collector|Proficy|Recovered|AlmODBC|Close Digital Point|DataBlock|Channel|Record|TESTBOOL|OK|OPC|Item|_COMMCHECK_|SYSTEM|ADMINISTRATOR|Unknown|ItemID|Field's|Connection|hutdown|acknowledged|Alarming|Suspended|primary|SAC|reloaded|Fix32|1601-01-01"

(Select-String -Path $filter -Pattern $pattern -NotMatch) |
    ForEach-Object -Begin {Remove-Item $filter} -Process {$_.line | Out-File -Append -Encoding unicode $_.filename }

Outfile包含编码错误,例如

  

L G NIV。

我尝试使用Select-String -encoding unicode,但这只会在输出文件中产生乱码

  

㨶㜵㤬㠹嬠啌华ㅃ†⁝彄䅔〲弪呇弱噄䅟⁌††††††䭏䭏†††††††††传⁋†

有什么想法如何正确编码吗?

输入示例:

2018-06-13  06:24:59,999 [LUNSC2  ] Fix32.LUNSC2.LUNOP10_COMMCHECK_DV2.F_CV set to 0 by LUNOP10::SYSTEM ADMINISTRATOR               
2018-06-13  06:26:01,445 [LUNSC1  ] D_TA204_GT1_DV_AL             CFN              LARM      D_TA204_GT1_Reglerfel                  
2018-06-13  06:26:09,557 [LUNSC2  ] TRE-12-22-I085                OK                 OK      K-FP60 2 MISSADE SPJÄLLMOTIONERINGAR 

0 个答案:

没有答案