开发者

PowerShellscript, bad file encoding conversation

开发者 https://www.devze.com 2023-04-08 20:31 出处:网络
I have a PowerShell script for the conversation of file character encoding. Get-ChildItem -Path D:/test/data -Recurse -Include *.txt |

I have a PowerShell script for the conversation of file character encoding.

Get-ChildItem -Path D:/test/data -Recurse -Include *.txt |
ForEach-Object {
  $inFileName = $_.DirectoryName + '\' + $_.name
  $outFileName = $inFileName + "_utf_8.txt"
  Writ开发者_运维技巧e-Host "windows-1251 to utf-8: " $inFileName -> $outFileName  
  E:\bin\iconv\iconv.exe -f cp1251 -t utf-8 $inFileName > $outFileName
}

But instead of utf-8 it converts file character encoding into utf-16. When I invoke the iconv utility from command line it works fine.

What do I wrong?


When you redirect output to a file, Powershell is using Unicode as the default encoding. Instead of using the redirection operator, you can pipe to Out-File with a -Encoding UTF8 switch.

E:\bin\iconv\iconv.exe -f cp1251 -t utf-8 $inFileName | Out-File -FilePath $outFileName -Encoding UTF8

The following TechNet article has more information (equivalent to Get-Help Out-File -full in Powershell v2).

  • Out-File

In case it helps your scenario at all, it's worth noting that you can use Powershell to do the encoding conversion also.

Get-Content $inFileName -Encoding ASCII |
Out-File -FilePath $outFileName -Encoding UTF8
0

精彩评论

暂无评论...
验证码 换一张
取 消