使用Powershell,我想使用:
编辑文件Get-Content $inputFile | ForEach-Object {
$_.Replace("|Foo;","|Bar;")
} | Out-File $outputFile
此文件采用ASCII编码,但包含二进制部分
使用Notepad ++进行相同的替换工作!
将inputFile和outputFile与Notepad ++进行比较我有一些我不想要的更改:
输出文件长度(字符数)从二进制部分行数增长
更改之前Notepad ++检测到End of Line为" UNIX",之后为Dos \ Windows(但文件使用CRLF = Windows EOL)
在二进制部分,Notepad ++显示" CR"或" LF"转型前的EOL," CRLF" EOL
很明显,Powershell会将一些二进制字符转换为Windows End Of Line。
如何避免它?
答案 0 :(得分:0)
感谢wOxxOm给了我解决方案:
[IO.File]::WriteAllText(`
$outputFile, `
[IO.File]::ReadAllText($inputFile,[Text.Encoding]::GetEncoding("iso-8859-1")).Replace("|Foo;","|Bar;"),`
[Text.Encoding]::GetEncoding("iso-8859-1")
)