用于更改编码的Powershell脚本更改重音字符
我们有一些摘录是从另一个系统发送给我们的。编码一直在变化。我们需要在内部保持这一点。编写了PowerShell脚本以将编码更改为UTF-8。但是重音字符被改变了。名称Denaè更改为Denaè我想保留名称为Denaè?任何帮助都将不胜感激 我想使用PowerShell将文件更改为UTF-8,重音字符保持不变。可能吗 沃恩普里兹 这是我现在掌握的代码 $Source='C:\Source' $Destination='C:\Destination' $Utf8NoBomEncoding=新对象System.Text.UTF8Encoding($False) 删除项$Destination-Recurse-Force foreach($i in Get ChildItem$Source-Recurse-Force){ 如果($i.PSIsContainer){ 持续 }用于更改编码的Powershell脚本更改重音字符,powershell,encoding,utf-8,Powershell,Encoding,Utf 8,我们有一些摘录是从另一个系统发送给我们的。编码一直在变化。我们需要在内部保持这一点。编写了PowerShell脚本以将编码更改为UTF-8。但是重音字符被改变了。名称Denaè更改为Denaè我想保留名称为Denaè?任何帮助都将不胜感激 我想使用PowerShell将文件更改为UTF-8,重音字符保持不变。可能吗 沃恩普里兹 这是我现在掌握的代码 $Source='C:\Source' $Destination='C:\Destination' $Utf8NoBomEncoding=新对象S
}
Ã
字符是è
带坟墓的拉丁文小写字母E的UTF-8外观(codepointU+00E8
)
证明:
[System.Text.Encoding]::UTF8.GetBytes([char]'è') -join ', '
# 195, 168
[System.Text.Encoding]::GetEncoding(1252).GetBytes([char[]]'è') -join ', '
# 195, 168
[char[]][System.Text.Encoding]::UTF8.GetBytes([char]'è') -join ''
# è
替换
è->è
看起来像是将文件转换为纯文本,因此它不再是Unicode。显示使用.Powershell 5.1 get content处理文件的代码的相关部分。如果没有“-encoding utf8”参数,则不会检测到utf8 no bom。
[System.Text.Encoding]::UTF8.GetBytes([char]'è') -join ', '
# 195, 168
[System.Text.Encoding]::GetEncoding(1252).GetBytes([char[]]'è') -join ', '
# 195, 168
[char[]][System.Text.Encoding]::UTF8.GetBytes([char]'è') -join ''
# è