Powershell:替换为西里尔字符串
Powershell: Replace in cyrillic string
我无法成功替换西里尔字符串。
我的文件使用 BOM/
使用 UTF-8 编码
powershell脚本代码:
$Title = "название видео"
$Title = $Title.Replace("название", "")
Write-Host $Title
cmd /c pause
结果:
将字体从 raster 更改为一些 true type 字体
解决方案:
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
我无法重现您的问题。不过,让我猜测 [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
我无法成功替换西里尔字符串。
我的文件使用 BOM/
使用 UTF-8 编码powershell脚本代码:
$Title = "название видео"
$Title = $Title.Replace("название", "")
Write-Host $Title
cmd /c pause
结果:
将字体从 raster 更改为一些 true type 字体
解决方案:
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
我无法重现您的问题。不过,让我猜测 [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