albertminrich
Goto Top

Umlaute in Textdatei mit Eingabeaufforderung korrekt wiedergeben?

Hallo,

ich hab eine mit notepad erstellte Textdatei test.txt, in der steht Müller.
Wenn ich jetzt in der Eingabeaufforderung
type test.txt schreibe, kommt als Ausgabe
m3ller

Wenn ich die Datei nicht mit notepad sondern mit edit erstelle, wird es korrekt dargestellt. Bringt mir aber nichts, weil ich bereits eine bestehene (mit notepad) erstellte Datei mit jeder Menge Inhalt habe.

Was kann ich tun?


Danke
Martin

Content-Key: 83520

Url: https://administrator.de/contentid/83520

Printed on: April 25, 2024 at 11:04 o'clock

Member: misterdemeanor
misterdemeanor Mar 19, 2008 at 15:12:43 (UTC)
Goto Top
Grüß Dich Martin,

das liegt an der Codierung. Der type Befehl war dazu gedacht ASCII Dateien auszugeben.
ASCII enthält 128 Zeichen.
Wenn Du mit notepad.exe eine .txt Datei speicherst wird standardmäßig in ANSI codiert.
ANSI enthält 256 Zeichen wobei die ersten 128 Zeichen ASCII-identisch sind.

Normalerweise wird in der MS-DOS Eingabeaufforderung die Codepapage 850 verwendet. Das (kombiniert mit einer ANSI codierten .txt) führt zu Deinem Problem.

Wenn Du Deine .txt´s in Notepad als Unicode codiert speicherst gibt es keine Probleme.

Allerdings weiß ich nicht was dort als Unicode gemeint ist da es auch die Auswahlmöglichkeiten UTF-8 und Unicode Big Endian gibt. Nun nehme ich einfach mal an das es sich hier bei Unicode um UTF-8 (oder 16 oder 32) Little Endian ohne BOM handelt...vielleicht aber auch UCS-2 Big Endian...wer blickt da noch durch face-smile

BG, Felix -misterdemeanor-

PS: Notepad++ face-wink
Member: AlbertMinrich
AlbertMinrich Mar 19, 2008 at 15:31:59 (UTC)
Goto Top
Danke für die Antwort.

Ich hab´s mit allen vier Varianten ausprobiert.
Mit Unicode ist zwar die type-Ausgabe korrekt, aber es klappt nicht mit dem for-Befehl (for /F %i in (test.txt) do echo %i). Da wird dann gar nichts ausgegeben.
Die anderen beiden Unicode Bid Endian und UTF-8 gehen auch nicht.

Aber egal, ich hab´s jetzt per vbs gemacht.

Gruß
Martin
Member: bastla
bastla Mar 19, 2008 at 16:18:29 (UTC)
Goto Top
Hallo AlbertMinrich!

Für's nächste Mal: Wenn Du mit
chcp 1252>nul
eine passende Codepage aktivierst, sollte es auch in Batch klappen ...

Grüße
bastla

P.S.: Der erwähnte Notepad++ ist auch für VBS sehr zu empfehlen ...
Member: AlbertMinrich
AlbertMinrich Mar 19, 2008 at 16:46:33 (UTC)
Goto Top
Das hatte ich vor meinem ersten Post schon probiert. Hat aber auch nichts geändert.
Auch jetzt mit den 4 verschiedenen notepad-Varianten (Ansi, Unicode...) klappt´s mit keiner.
Member: misterdemeanor
misterdemeanor Mar 19, 2008 at 17:47:44 (UTC)
Goto Top
Hallo nochmal,

Auch jetzt mit den 4 verschiedenen notepad-Varianten (Ansi, Unicode...) klappt´s mit keiner.

Wenn ich die Codepage 1252 mit der ANSI Tabelle vergleiche fällt mir auf das die Umlaute(ä,ö,ü,Ä,Ö,Ü) gleiche Codes haben.

Wenn ich mit notepad.exe eine Datei mit dem Inhalt "ä,ö,ü,Ä,Ö,Ü" als test.txt im ANSI Format speichere und am cmd.exe-Prompt
chcp 1252 <Enter>
type test.txt <Enter>
eingebe, bekomme ich eine korrekt "formatierte" Ausgabe. Ebenso wenn ich test.txt im "Unicode" Format abspeichere.

Könnte es an Deiner Batch Datei gelegen haben? Also ich persönlich hab mit Batch nix am Hut und wenn ich in eine .bat
@echo off
for /F %i in (test.txt) do echo %i
eintippe und ausführe wird mir nur angezeigt Syntaxfehler. Aber ich kam auch nicht auf den Gedanken help for einzutippen face-smile

Aber egal, ich hab´s jetzt per vbs gemacht.

OK, vielleicht lässt Du Biber´s Batch-Azubi doch noch einen Blick auf den Code der ehemaligen Batchdatei werfen. Selbstredend nur wenn Du selbst noch interessierst bist, bzw. bastla "Lust" dazu hat.
Ansonsten vermesse ich mich mal Dich dazu zu bitten How can I mark a post as solved?.

BG, Felix -misterdemeanor-
Member: bastla
bastla Mar 19, 2008 at 18:04:34 (UTC)
Goto Top
@misterdemeanor

Vielleicht solltest Du Dich auch bei Biber bewerben ... face-wink

Dein Batch-Beispiel mit einfachen %-Zeichen funktioniert übrigens zwar als Direkteingabe, benötigt aber als gespeicherter Batch die Schreibweise %%i.

Grüße
bastla
Member: misterdemeanor
misterdemeanor Mar 19, 2008 at 18:10:37 (UTC)
Goto Top
@bastla

Vielleicht solltest Du Dich auch bei Biber
bewerben ... face-wink

Und Batchen lernen? Als VB´ler bin ich froh genug noch eine kleine Stufe weiter über dem von C´lern definiertem"Abschaum" zu stehen face-big-smile face-wink

Dein Batch-Beispiel mit einfachen %-Zeichen funktioniert übrigens zwar als
Direkteingabe, benötigt aber als gespeicherter Batch die Schreibweise %%i.

Ah, OK, hatte es aus einem Post von Martin kopiert...

BG, Felix -misterdemeanor-