Mit CMD eine Textdatei erstellen und mit UTF-8 kodieren
Tobias
Guten Abend zusammen,
ich habe da ein kleines Problemchen: Ich würde gerne die Namen aller Dateien in einem Verzeichnis in eine Textdatei schreiben. Diese Datei soll UTF-8 kodiert sein. Nach ein wenig Internet-Suche bin ich soweit:
inhalt.bat
@echo off
chcp 65001
dir /b>inhalt.txt
Das Problem ist nun, dass die Textdatei nur UTF-8 kodiert wird, wenn sich spezielle Sonderzeichen in mindestens einem der Dateinamen befinden. Tut es das nicht, so wird das Dokument Standart-kodiert (ANSI). Mein Ziel ist es, dass die Textdatei aber in jedem Fall UTF-8 kodiert wird. Mache ich irgendetwas falsch?
Tobias
Liebe Mitdenker, liebe Wissende, liebe Neugierige,
ja!
ich habe da ein kleines Problemchen: Ich würde gerne die Namen aller Dateien in einem Verzeichnis in eine Textdatei schreiben. Diese Datei soll UTF-8 kodiert sein. Nach ein wenig Internet-Suche bin ich soweit:
Guck mal in google unter "convert cp1252 to utf-8", da findest Du diverse Lösungen mit PHP. Kannst dir sicher auch ein EXE it irgendeiner Hochsprache erste,len.
Ein fertiges Dienstprogramm aus DOS7 fällt mir jetzt leider nicht ein
Spirituelle Grüße
Euer Robert
robert.r@online.de
Tag,
Guck mal in google unter "convert cp1252 to utf-8", da findest Du diverse Lösungen [...]
Also, ich habe hier was gefunden was nach einer Lösungsmöglichkeit aussieht.
Dazu wird dieser Befehl genutzt:
iconv.exe -f CP1252 -t UTF-8 test.txt >testout2.txt
Dieser benötigt ja eine iconv-Erweiterung wenn ich das richtig sehe. Diese ist hier verfügbar. Allerdings blicke ich da überhaupt nicht durch was ich machen soll um das zum laufen zu bringen... Könnte mir das mal jemand erklären?
Tobias
Liebe Mitdenker, liebe Wissende, liebe Neugierige,
ja!
Guck mal in google unter "convert cp1252 to utf-8", da findest Du diverse Lösungen [...]
Also, ich habe hier was gefunden was nach einer Lösungsmöglichkeit aussieht.
Dazu wird dieser Befehl genutzt:
iconv.exe -f CP1252 -t UTF-8 test.txt >testout2.txt
Dieser benötigt ja eine iconv-Erweiterung wenn ich das richtig sehe. Diese ist hier verfügbar. Allerdings blicke ich da überhaupt nicht durch was ich machen soll um das zum laufen zu bringen... Könnte mir das mal jemand erklären?
iconv ist ein unix-tool
es gibt aber auch eine für Win übersetzte Version (EXE, DLL)
die benötigt aber auch die Codepages, oder wie das hier heißt.
eine umfangreiche Installationsanleitung findest Du hier
Wenn Du PHP komplett installiert hast, kannst Du dir auch damit einen Dreizeiler schreiben, der für dich die ganze Arbeit macht: Verzeichnis auslesen, Dateinamen von cp1250 nach utf-8 umwandeln, als Datei abspeichern, ...
Spirituelle Grüße
Euer Robert
robert.r@online.de
Tag,
eine umfangreiche Installationsanleitung findest Du hier Iconv.exe für Windows
Also: erstmal ein großes Dankeschön an dich für deine Mühe.
Ich habe es tatsächlich zum laufen bekommen - allerdings muss ich sagen, dass es genauso agiert wie der Schnipsel den ich hier in meinem 1. Post gezeigt habe. So denke ich, dass ich mich mit der Situation zufrieden geben muss.
Tobias
Moin,
ich habe da ein kleines Problemchen: Ich würde gerne die Namen aller Dateien in einem Verzeichnis in eine Textdatei schreiben. Diese Datei soll UTF-8 kodiert sein. Nach ein wenig Internet-Suche bin ich soweit:
@echo off chcp 65001 dir /b>inhalt.txt
AFAIK hat chcp nur dann eine Funktion, wenn mehrere Codepages für die Kommandozeile eingerichtet sind, was eher selten sein dürfte.
Das Problem ist nun, dass die Textdatei nur UTF-8 kodiert wird, wenn sich spezielle Sonderzeichen in mindestens einem der Dateinamen befinden. Tut es das nicht, so wird das Dokument Standart-kodiert (ANSI).
Ich glaube, deine Schlussfolgerung ist falsch. Solange nur Zeichen aus dem ASCII-Bereich vorkommen, lässt sich die tatsächlich verwendete Codierung nicht mehr erkennen, weil ASCII, ISO-Latin (im Windows-Jargon "ANSI") und UTF-8 in diesem Bereich zu 100% deckungsgleich sind. Erst wenn Zeichen außerhalb von ASCII vorkommen, hat ein Editor oder irgendeine andere Software überhaupt einen Anhaltspunkt, die verwendete Codierung zu bestimmen. Wirklich zuverlässig geht das aber in vielen Fällen auch nicht.
Ergo: Wenn Windows also die Codierung nicht erkennen kann und dann einfach "ANSI" behauptet, ist das durchaus korrekt. Es ist aber gleichzeitig auch korrektes UTF-8.
So long,
Martin
PS: In Zukunft bitte wieder Standar_d_ mit d, wie es sich gehört.
Tag,
Das Problem ist nun, dass die Textdatei nur UTF-8 kodiert wird, wenn sich spezielle Sonderzeichen in mindestens einem der Dateinamen befinden. Tut es das nicht, so wird das Dokument Standard-kodiert (ANSI).
Ich glaube, deine Schlussfolgerung ist falsch. Solange nur Zeichen aus dem ASCII-Bereich vorkommen, lässt sich die tatsächlich verwendete Codierung nicht mehr erkennen, weil ASCII, ISO-Latin (im Windows-Jargon "ANSI") und UTF-8 in diesem Bereich zu 100% deckungsgleich sind. Erst wenn Zeichen außerhalb von ASCII vorkommen, hat ein Editor oder irgendeine andere Software überhaupt einen Anhaltspunkt, die verwendete Codierung zu bestimmen. Wirklich zuverlässig geht das aber in vielen Fällen auch nicht.
Nun, ich vermute stark, dass es ANSI kodiert ist, da dies die vorausgewählte Codierung in meinem Editor ist, wenn ich auf "speichern als" gehe. Bei speziellen Sonderzeichen ist eben UTF-8 voreingestellt. So vermute ich, dass der Editor die Kodierung am BOM erkennt.
Tobias
Hallo Tobias,
Ich würde gerne die Namen aller Dateien in einem Verzeichnis in eine Textdatei schreiben. Diese Datei soll UTF-8 kodiert sein.
Kommandointerpreter via cmd /u starten. Dann werden die Ausgaben als Unicode behandelt (siehe Notepad -> Datei | Speichern unter…).
Grüße, Thomas
Warum sieht das Posting so komisch aus? Der rechts stehende Text stand nach einem "|" hinter "Notepad ". Vorschau war allerdings ok.
Grüße, Thomas
Warum sieht das Posting so komisch aus? Der rechts stehende Text stand nach einem "|" hinter "Notepad ". Vorschau war allerdings ok.
Aha, das Pipe-Zeichen wird offenbar nicht richtig oder anders als erwartet interpretiert. Im Zitat ist es allerdings wieder drin.
Grüße, Thomas
Warum sieht das Posting so komisch aus? Der rechts stehende Text stand nach einem "|" hinter "Notepad ". Vorschau war allerdings ok.
Aha, das Pipe-Zeichen wird offenbar nicht richtig oder anders als erwartet interpretiert. Im Zitat ist es allerdings wieder drin.
Das passiert, wenn eine Forumssoftware mit Haufenweise Wikipedia-Spielkram zugemüllt wird.
Der senkrechte Strich ist hier neuerdings nicht mehr verwendbar, weil man damit wohl eine Tabelle baut. Dass solche Formatierungsoptionen in Texten mit fester Zeichenbreite restlos unnötig sind, wie hier zu sehen sogar mehr stören denn helfen, und in den letzten 15 Jahren sicher auch nie gefehlt haben (und in 30 Jahren E-Mail davor bestimmt ebenso wenig), hat derjenige, der das hier eingebaut hat, wohl nicht überblickt. Hauptsache modern.
Der senkrechte Strich ist hier neuerdings nicht mehr verwendbar, weil man damit wohl eine Tabelle baut.
Danke. Dachte schon, ich bin zu doof/alt für den Quatsch. Offenbar lässt sich das Zeichen | mittels \| maskieren (zeigt zumindest die Vorschau richtig an).
Grüße, Thomas
Liebe Mitdenker, liebe Wissende, liebe Neugierige,
ja!
Der senkrechte Strich ist hier neuerdings nicht mehr verwendbar, weil man damit wohl eine Tabelle baut.
Danke. Dachte schon, ich bin zu doof/alt für den Quatsch. Offenbar lässt sich das Zeichen | mittels \| maskieren (zeigt zumindest die Vorschau richtig an).
anders herum würde es mir besser gefallen. Alle Zeichen bis aufs Escapezeichen sind "normal", wenn nicht das Escapezeichen davor steht.
Aber das wird man wohl nicht mehr ändern können?
Spirituelle Grüße
Euer Robert
robert.r@online.de