utf8 texto online convertir convert como change archivo encoding powershell iconv utf

encoding - texto - Iconv está convirtiendo a UTF-16 en lugar de UTF-8 cuando se invoca desde powershell



encoding unix (1)

Tengo un problema al tratar de convertir por lotes la codificación de algunos archivos de ISO-8859-1 a UTF-8 utilizando iconv en un script de powershell.

Tengo este archivo bat, que funciona bien:

for %%f in (*.txt) do ( echo %%f C:/"Program Files"/GnuWin32/bin/iconv.exe -f iso-8859-1 -t utf-8 %%f > %%f.UTF_8_MSDOS )

Necesito convertir todos los archivos en la estructura de directorios, así que programé este otro script, esta vez usando powershell:

Get-ChildItem -Recurse -Include *.java | ForEach-Object { $inFileName = $_.DirectoryName + ''/' + $_.name $outFileName = $inFileName + "_UTF_8" Write-Host Convirtiendo $inFileName -> $outFileName C:/"Program Files"/GnuWin32/bin/iconv.exe -f iso-8859-1 -t utf-8 $inFileName > $outFileName }

Y al utilizar esto, el resultado es que los archivos se convierten a UTF-16. No tengo ni idea de lo que estoy haciendo mal.

¿Podría alguien ayudarme con esto? ¿Podría ser algún tipo de problema con la codificación de Powershell en sí?

Estoy usando W7 y WXP y LibIconv 1.9.2


> esencialmente está usando el cmdlet Out-File cuya codificación predeterminada es Unicode. Tratar:

iconv.exe ... | Out-File -Encoding Utf8

o con params:

& "C:/Program Files/GnuWin32/bin/iconv.exe" -f iso-8859-1 -t utf-8 $inFileName | Out-File -Encoding Utf8 $outFileName

Y dado que iconv.exe está saliendo en UTF8, debe decirle al subsistema de consola .NET cómo interpretar la secuencia stdin de esa manera (ejecute esto antes de iconv.exe):

[Console]::OutputEncoding = [Text.Encoding]::UTF8