我正在尝试将UTF-8转换为ANSI文件。通过Google的一点知识和帮助,我找到了一行来转换SINGLE文件
Get-Content C:\Output2\PA01.094 | Set-Content C:\Output\PA01094 -Encoding Ascii
现在我想将文件夹中的所有UTF-8文件转换为另一个文件夹而不更改文件名。
答案 0 :(得分:2)
以下内容将读取1
中的所有文件,并在编码为ASCII的$sourceFolder
下重新创建。
$destFolder
N.B。此代码不会验证原始文件的编码。
答案 1 :(得分:0)
您可以使用以下代码。根据需要修改Get-ChildItem以指定所需的文件。
$sourcePath = "C:\source"
$destinationPath = "C:\output"
if (!(Test-Path $destinationPath))
{
New-Item -ItemType Directory -Path $destinationPath
}
Get-ChildItem -Path $sourcePath -File | ForEach-Object {
Write-Host "Converting $_"
$content = Get-Content $_.FullName
Set-content (Join-Path -Path $destinationPath -ChildPath $_) -Encoding Ascii -Value $content
}
ASCII编码无法处理UTF8或其他Unicode编码可以处理的所有字符,无法翻译的字符可能会导致?在输出文件中。
要检查输出的编码,可以使用PowerShell。
例如,在记事本中创建的文本文件中显示" Hello,World!"
以下编码将产生这些结果。注意UTF-8的启动有特殊字符,这些表示文件是UTF-8,而不是记事本中的默认保存格式。
PS C:\support> [System.IO.File]::ReadAllBytes("C:\support\helloworld_ansi.txt")
72
101
108
108
111
44
32
87
111
114
108
100
33
PS C:\support> [System.IO.File]::ReadAllBytes("C:\support\helloworld_unicode.txt")
255
254
72
0
101
0
108
0
108
0
111
0
44
0
32
0
87
0
111
0
114
0
108
0
100
0
33
0
PS C:\support> [System.IO.File]::ReadAllBytes("C:\support\helloworld_utf8.txt")
239
187
191
72
101
108
108
111
44
32
87
111
114
108
100
33
PS C:\support>