Pregunta

¿Cuál es la mejor manera de convertir un archivo UTF-16 a UTF-8? Necesito usar esto en un script cmd.

¿Fue útil?

Solución

Existe una herramienta GNU recode que también puede usar en Windows. Por ejemplo,

recode utf16..utf8 text.txt

Otros consejos

Una alternativa a Ruby sería escribir un pequeño programa .NET en C # (.NET 1.0 estaría bien, aunque 2.0 sería más simple :) - es un código bastante trivial. ¿Esperaba hacerlo sin ninguna otra aplicación? Si desea un poco de código para hacerlo, agregue un comentario y completaré la respuesta ...

EDITAR: De acuerdo, esto es sin ningún tipo de comprobación de errores, pero ...

using System;
using System.IO;
using System.Text;

class FileConverter
{
  static void Main(string[] args)
  {
    string inputFile = args[0];
    string outputFile = args[1];
    using (StreamReader reader = new StreamReader(inputFile, Encoding.Unicode))
    {
      using (StreamWriter writer = new StreamWriter(outputFile, false, Encoding.UTF8))
      {
        CopyContents(reader, writer);
      }
    }
  }

  static void CopyContents(TextReader input, TextWriter output)
  {
    char[] buffer = new char[8192];
    int len;
    while ((len = input.Read(buffer, 0, buffer.Length)) != 0)
    {
      output.Write(buffer, 0, len);
    }
  }
}

Ciertamente, la forma más fácil es cargar el script en el bloc de notas y luego guardarlo nuevamente con la codificación UTF-8. Es una opción en el cuadro de diálogo Guardar como ...

¿Quizás con iconv ?

Si tiene instalada una distribución ruby, puede llamar a un script ruby ??que se encargue de la conversión:

Script Ruby para convertir codificación de caracteres de archivo (s)

En el mismo espíritu: script Perl

En ausencia de soporte de script, tendría que codificarlo así fuente C ++ utilizando una llamada WideCharToMultiByte () ...

Puede hacerlo fácilmente con los cmdlets integrados de PowerShell, que puede invocar desde cmd:

C:\> powershell -c "Get-Content mytext.txt | Set-Content -Encoding utf8 mytext_utf8.txt"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top