Was ist der beste Weg, um UTF-16-Dateien in UTF-8 zu konvertieren? Ich muss das in einem Cmd-Skript verwenden.Konvertierung von UTF-16 in UTF-8 (für Skripting unter Windows)
Antwort
Es gibt ein GNU-Tool recode, das Sie auch unter Windows verwenden können. Zum Beispiel
recode utf16..utf8 text.txt
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 ..
Cheers, ich es als eine Abhilfe verwenden kann, aber mein Skript muss diese Umwandlung tun, ich manuell jede Datei nicht konvertieren kann .... – Grzenio
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
Wenn Sie ein Ruby-Distribution installiert haben, können Sie ein Ruby-Skript aufrufen Pflege der Umwandlung unter:
Ruby script to convert file(s) character encoding
Im gleichen Geist: Perl script
In Abwesenheit von Script-Unterstützung, würden Sie es wie diese C++ source mit einem WideCharToMultiByte() aufrufen, ... Code müssen
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);
}
}
}
Ich hatte gehofft, es gibt ein Dienstprogramm, das ich einfach verwenden könnte :) Ich wäre dankbar für ein wenig Code, Prost. – Grzenio
FYI, hier ist ein kleines Dienstprogramm, das auf diesem Code basiert: [https://github.com/paulroho/ConvertToUtf8](https://github.com/paulroho/ConvertToUtf8). – paulroho
Vielleicht mit iconv?
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
Kurz notiert - das funktioniert auch auf ubuntu linux mit einem apt-get install recode. Praktisch. –