Powershell无法正确打印重音字符

时间:2016-08-10 22:03:06

标签: powershell utf-8 ascii

所以我试图使用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参数(文件名)吗?

2 个答案:

答案 0 :(得分:2)

我通过将chcp 65001添加到脚本

来解决了这个问题

这会将代码页更改为Unicode

谢谢

答案 1 :(得分:-1)

我通过在记事本++中设置ANSI格式而不是UTF-8(无BOM)来解决了这个问题