2008-11-05 8 views

Antwort

19

Es gibt ein GNU-Tool recode, das Sie auch unter Windows verwenden können. Zum Beispiel

recode utf16..utf8 text.txt 
+3

Eine Windows-Version von 'recode' kann als Teil des Pakets 'GNU-Dienstprogramme für Win32' von sourceforge heruntergeladen werden: http://downloads.sourceforge.net/unxutils/UnxUtils.zip?modtime=1172730504&big_mirror=0 – msanders

+1

Kurz notiert - das funktioniert auch auf ubuntu linux mit einem apt-get install recode. Praktisch. –

7

Sicherlich ist einfachste Weg, um das Skript in den Editor zu laden, dann speichern Sie es erneut mit der UTF-8-Codierung. Es ist eine Option im Dialogfeld Speichern unter ..

+2

Cheers, ich es als eine Abhilfe verwenden kann, aber mein Skript muss diese Umwandlung tun, ich manuell jede Datei nicht konvertieren kann .... – Grzenio

+0

Obwohl es eigentlich nicht die Frage nicht beantworten, weil es doesn Ich arbeite nicht in einem Skript, das hat mein Problem gelöst! Danke – davidreedernst

15

eine Alternative zu Rubin wäre ein schreiben kleines .NET-Programm in C# (.NET 1.0 wäre in Ordnung, obwohl 2.0 wäre einfacher :) - es ist ein ziemlich triviales bisschen Code. Hatten Sie gehofft, es ohne irgendwelche anderen Anwendungen zu tun? Wenn Sie ein Stück Code wollen, es zu tun, um einen Kommentar hinzufügen, und ich werde in der Antwort füllen ...

EDIT: Okay, das ist ohne jede Art von Fehlerprüfung, aber ...

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); 
    } 
    } 
} 
+0

Ich hatte gehofft, es gibt ein Dienstprogramm, das ich einfach verwenden könnte :) Ich wäre dankbar für ein wenig Code, Prost. – Grzenio

+0

FYI, hier ist ein kleines Dienstprogramm, das auf diesem Code basiert: [https://github.com/paulroho/ConvertToUtf8](https://github.com/paulroho/ConvertToUtf8). – paulroho