我无法成功替换西里尔字符串。
我的文件由UTF-8编码,带有BOM /
powershell脚本代码:
$Title = "название видео"
$Title = $Title.Replace("название", "")
Write-Host $Title
cmd /c pause
结果:
答案 0 :(得分:1)
解决方案:
function ConvertTo-Encoding ([string]$From, [string]$To){
Begin{
$encFrom = [System.Text.Encoding]::GetEncoding($from)
$encTo = [System.Text.Encoding]::GetEncoding($to)
}
Process{
$bytes = $encTo.GetBytes($_)
$bytes = [System.Text.Encoding]::Convert($encFrom, $encTo, $bytes)
$encTo.GetString($bytes)
}
}
[System.Text.Encoding]::Default.Codepage
$Title = "название видео" | ConvertTo-Encoding "UTF-8" "windows-1251"
Write-Host $Title
$Title = $Title.Replace(("название" | ConvertTo-Encoding "UTF-8" "windows-1251"), "")
Write-Host $Title
cmd /c pause
答案 1 :(得分:1)
我无法重现你的问题。不过,让我猜一下[System.Console]::OutputEncoding.Codepage
的输出是1251
。您可以动态地将控制台编码更改为Unicode (UTF-8)
(代码页65001
);尝试按如下方式修改脚本:
### debug ### [System.Console]::OutputEncoding
[System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8
### debug ### [System.Console]::OutputEncoding
$Title = "название видео"
$Title = $Title.Replace("название", "")
Write-Host $Title
pause
或使用
将控制台编码更改为Unicode
(代码页1200
)
[System.Console]::OutputEncoding = [System.Text.Encoding]::Unicode
答案 2 :(得分:0)
将字体从栅格更改为某些真实类型字体