我编写了一个PowerShell脚本,使用以下代码将文件从Windows转换为Unix。
while ($line = $tempfile.ReadLine()) {
$outstream.Write($line + "`n")
}
如果数据文件中没有特殊字符,则可以正常工作。 现在,如果数据文件中有一些特殊字符,它们将按以下方式转换:
test‡test
→test¿½test
test,test
→test¿½test
有没有建议如何在不转换任何字符的情况下实现它?
注意:我不想使用dos2unix
,因为此exe在服务器上不存在。所以我需要批处理脚本或PowerShell中的解决方案。
答案 0 :(得分:0)
不确定这是您的问题,但我认为它只是编码。
尽管:
$tempfile = [System.IO.StreamReader]("d:\temp\test.txt")
$tempfile.ReadLine()
您可以尝试:
Get-Content 'D:\temp\test.txt' -encoding UTF8
然后使用:
$tempfile = New-Object System.IO.StreamReader "d:\temp\test.txt", $([System.Text.Encoding]::UTF8)
$tempfile.ReadLine()
可用的编码:
ASCII; Unicode; BigEndianUnicode; UTF32; UTF7; UTF8;默认(对于OEM)
答案 1 :(得分:0)
您是否尝试过[io.file]
?似乎没有这些问题。
$txt = [io.file]::ReadAllText('E:\temp\dos.txt') -replace "`r`n","`n"
[io.file]::WriteAllText('e:\temp\unix.txt', $txt)