powershell批量转换⽂本⽂件编码(GBK转UTF-8)
powershell 批量转换⽂本⽂件编码(GBK转UTF-8)
01 前⾔
⼿头有⼀批SQL⽂件,通过某程序批量更新到Local DB。但是发现导进去后中⽂变乱码(⼀堆),⽽且⽇志⾥头insert语句中⽂已经变成乱码,想来应该是编码的问题。⼀看SQL⽂件,GBK(系统默认编码)编码,于是想统⼀改成UTF-8编码。⼜不想去各种⼯具了,直接⽤Powershell搞搞了。
02 正⽂
刚开始直接⽤powershell的内置命令get-content 和 set-content是挺⽅便的,但是结果⼀看,GBK转到了UTF-8 BOM 编码,不是很满意。但是也贴出来作为参考吧。
@echo off
< -command "dir *.sql -R|foreach-object{(Get-Content $_.FullName -Encoding Default) | Set-Content $_.FullName -Encoding UTF8 };Write-H ost '转换完成...'"
pause
于是想到另外⼀个⽅法——。最后得到想要的UTF-8编码。powershell创建目录
@echo off
< -command "dir *.sql -R|foreach-object{[void][System.IO.File]::WriteAllBytes($_.FullName,[System.Text.Encoding]::Convert([System.Text.En coding]::GetEncoding('GBK'),[System.Text.Encoding]::UTF8,[System.IO.File]::ReadAllBytes($_.FullName)))};Write-Host '转换完成...'"
pause
脚本使⽤说明
脚本在powershell 5.1下测试通过
powershell脚本嵌⼊了CMD命令,所以另存为.bat,然后双击运⾏即可(递归遍历所有⼦⽬录,如果不需要,请将dir *.sql -R修改为dir *.sql)如果是其他⽂本格式如csv或txt,请将脚本中dir *.sql修改为dir *.csv 或 dir *.txt
其他编码转换也可参考,做适当修改即可
该脚本如果执⾏成功(不报错),请勿重复执⾏!否则可能会造成真的乱码。
03 后记
欢迎留⾔交流~
---------END---------