接手了一个很旧的.Net项目,估计当初使用的是VS2005开发的,.cs文件编码格式显示的都是ANSI(ANSI不是某种编码格式,含义是使用当前计算机默认编码格式),当时开发这个项目的计算机编码格式是Big5。现在在我电脑上编译就报错,等一会错误就消失了。原因就是因为文件编码的问题
现在我要将所有的.cs文件编码格式都转换为UTF8,我们使用ps脚本帮我们完成这个操作:
$list = Get-ChildItem .\Source\ -recurse *.cs|%{$_.FullName}
$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding($False)
foreach ($i in $list){
Write-Host $i
$a = Get-Content $i
[System.IO.File]::WriteAllLines($i, $a, $Utf8NoBomEncoding)
}
echo
- 新建一个文本文件,将上述代码粘贴进去,修改后缀名为 .ps1。 例如我的脚本名为 csToUtf-8.ps1
- 在脚本同级新建文件夹 Source
- 将要转码的文件放入Source文件夹中
- 使用Powershell执行脚本 csToUtf-8.ps1
上述脚本限定了只转换文件后缀为.cs的文件,可以根据需求进行修改