所以我试图使用PowerShell重命名文件,脚本应删除所有特殊字符。
简单吧?没那么快。重音字符未正确解析
这是我正在使用的脚本,名为renamefiles.ps1
param([string]$complfn) #Must be the first statement in your script
尝试这两种方法没有任何区别,无论是使用其中一种还是没有
#$OutputEncoding = [Console]::OutputEncoding
#[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
write-host $complfn
$encodage = New-Object System.Text.ASCIIEncoding
[System.Console]::OutputEncoding = $encodage
Write-Host $complfn
$encodage = New-Object System.Text.utf8encoding
[System.Console]::OutputEncoding = $encodage
Write-Host $complfn
$newcomplfn = [Text.Encoding]::ASCII.GetString([Text.Encoding]::GetEncoding("Cyrillic").GetBytes($complfn))
Write-Host $newcomplfn
我正在这样使用它
powershell.exe -file renamefiles.ps1 -complfn "ásdfésdf.txt"
这是我得到的输出:
ásdfésdf.txt
ásdfésdf.txt
ásdfésdf.txt
asdfesdf.txt
我看到最后一个命令正在有效地替换重音字符,但你知道我可以用什么来显示orignal参数(文件名)吗?
答案 0 :(得分:2)
我通过将chcp 65001
添加到脚本
这会将代码页更改为Unicode
谢谢
答案 1 :(得分:-1)
我通过在记事本++中设置ANSI格式而不是UTF-8(无BOM)来解决了这个问题