Powershell:替换为西里尔字符串

Vit*_*tal 3 powershell powershell-2.0 powershell-3.0 powershell-4.0

我无法成功替换西里尔字符串。

\n\n

我的文件是用 UTF-8 和 BOM/ 编码的

\n\n

powershell脚本代码:

\n\n
$Title = "\xd0\xbd\xd0\xb0\xd0\xb7\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xb2\xd0\xb8\xd0\xb4\xd0\xb5\xd0\xbe"\n$Title = $Title.Replace("\xd0\xbd\xd0\xb0\xd0\xb7\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5", "")\nWrite-Host $Title\ncmd /c pause\n
Run Code Online (Sandbox Code Playgroud)\n\n

结果:

\n\n

结果字符串

\n

Vit*_*tal 5

解决方案:

\n\n
   function ConvertTo-Encoding ([string]$From, [string]$To){\n        Begin{\n            $encFrom = [System.Text.Encoding]::GetEncoding($from)\n            $encTo = [System.Text.Encoding]::GetEncoding($to)\n        }\n        Process{\n            $bytes = $encTo.GetBytes($_)\n            $bytes = [System.Text.Encoding]::Convert($encFrom, $encTo, $bytes)\n            $encTo.GetString($bytes)\n        }\n    }\n\n    [System.Text.Encoding]::Default.Codepage\n\n    $Title = "\xd0\xbd\xd0\xb0\xd0\xb7\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xb2\xd0\xb8\xd0\xb4\xd0\xb5\xd0\xbe" | ConvertTo-Encoding "UTF-8" "windows-1251"\n    Write-Host $Title\n    $Title = $Title.Replace(("\xd0\xbd\xd0\xb0\xd0\xb7\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5" | ConvertTo-Encoding "UTF-8" "windows-1251"), "")\n    Write-Host $Title\n    cmd /c pause\n
Run Code Online (Sandbox Code Playgroud)\n