我正在运行以下 Powershell 脚本以将一系列输出文件连接到单个 CSV 文件中。whidataXX.htm
(其中xx
是两位数的序号),并且创建的文件数量因运行而异。
$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 编码的,但我的输出文件是 UTF16 编码的。当我在记事本中查看文件时,它看起来是正确的,但是当我在十六进制编辑器中查看它时,十六进制值00
出现在每个字符之间,当我将文件拉入 Java 程序进行处理时,文件打印到控制台之间的额外空格c h a r a c t e r s
。
首先,这对 PowerShell 来说是否正常?或者源文件中有什么东西会导致这种情况?
其次,我将如何解决上述代码中的这个编码问题?