我正在運行以下Powershell腳本以將一系列輸出文件連接成單個CSV文件。 whidataXX.htm
(其中xx
是一個兩位數的連續編號),創建的文件數因運行而異。爲什麼Powershell文件串聯會將UTF8轉換爲UTF16?
$metadataPath = "\\ServerPath\foo"
function concatenateMetadata {
$cFile = $metadataPath + "whiconcat.csv"
Clear-Content $cFile
$metadataFiles = gci $metadataPath
$iterations = $metadataFiles.Count
for ($i=0;$i -le $iterations-1;$i++) {
$iFile = "whidata"+$i+".htm"
$FileExists = (Test-Path $metadataPath$iFile -PathType Leaf)
if (!($FileExists))
{
break
}
elseif ($FileExists)
{
Write-Host "Adding " $metadataPath$iFile
Get-Content $metadataPath$iFile | Out-File $cFile -append
Write-Host "to" $cfile
}
}
}
的whidataXX.htm
文件進行編碼UTF8,但我的輸出文件進行編碼UTF-16。當我在記事本中查看文件時,它看起來是正確的,但是當我在十六進制編輯器中查看文件時,十六進制值00
出現在每個字符之間,並且當我將文件拖入Java程序進行處理時,文件將打印到控制檯在c h a r a c t e r s
之間有額外的空間。
首先,這對於PowerShell是否正常?或者是否有源文件中會導致這種情況?
其次,我將如何解決上述代碼中的這種編碼問題?
並確認,添加內容將簡單地將新數據附加到現有文件,對嗎? – dwwilson66
是的。它的對手Set-Content將覆蓋現有的數據。 – mjolinor