Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Diskutiere FindStr und Deutsche Umlaute im Windows 10 Software Forum im Bereich Windows 10 Foren; Ich benutze gern das Kommando FindStr, um damit nach bestimmten Begriffen in Textdateien zu suchen.
Bei deutschen Umlauten und Sonderzeichen, wie...
Ich benutze gern das Kommando FindStr, um damit nach bestimmten Begriffen in Textdateien zu suchen.
Bei deutschen Umlauten und Sonderzeichen, wie € ² ³ usw. gibt es Probleme.
Meine Testdatei ist diese:
Code:
Ein fröhliches Osterfest
in grünem Gras der Osterhas.
Eintritt: 5,00 €
Hier die Suche mit FindStr
Zunächst werden die Umlaute fehlerhaft angezeigt.
Wenn ich die Codepage auf 65001 einstelle, werden die Umlaute korrekt angezeigt.
Wenn ich eine Zeichenfolge mit einem Umlaut als Suchbegriff eingebe,
dann wird dieser nicht gefunden.
Hallo Argor,
ich verstehe Deine Antwort nicht so ganz...
Die cp 850 zeigt keine deutschen Umlaute.
Ich will ja in Dateien suchen, wo die Umlaute als UTF-8 Zeichen gespeicheret sind, und das klappt eigentlich mit der CP 65001.
ein "ü" = Hex: C3 BC
ein "€" = Hex: E2 82 AC
Ich habe mir einen kleinen BAT gemacht, damit klappt es auch mit Umlauten
Und so sieht er aus, der FindeStr.bat
Code:
CHCP 65001
ECHO %1>Suchbegriff.tmp
FindStr /G:Suchbegriff.tmp %2
DEL Suchbegriff.tmp
PAUSE
Das Problem ist folgendes.
Ich habe sehr viele Multi-Media-Dateien, Videos, Fotos und Musik.
Für die Festplatten, auf denen diese Dateien gespeichert sind, mache ich ein Gesamt-DIR mit CP65001.
Viele Dateinamen enthalten deutsche Umlaute usw.
Durch die CP 65001 stehen diese Namen korrekt mit deutschen Umlauten in dieser großen Datei (knapp 600 MB).
Durch einfaches Suchen finde ich also sehr schnell den Speicherort einer Datei, oder ich suche mir bestimmte Dateien heraus.
Hier ein kleiner Auszug aus der Datei
Code:
Verzeichnis von N:\AudioHK\#ZwSp\#erl\Das 50er Jahre Schlager Karussel (2) CD1\
21.03.2022 10:50 23.588.436 N:\AudioHK\#ZwSp\#erl\Das 50er Jahre Schlager Karussel (2) CD1\Alle Mädchen wollen küssen Leo Leandros.wav
21.03.2022 11:02 24.802.160 N:\AudioHK\#ZwSp\#erl\Das 50er Jahre Schlager Karussel (2) CD1\Ich möcht mit Dir Träumen Peter Kraus.wav
21.03.2022 11:02 27.096.332 N:\AudioHK\#ZwSp\#erl\Das 50er Jahre Schlager Karussel (2) CD1\Ich zähle täglich meine Sorgen Peter Alexander.wav
21.03.2022 10:56 25.196.920 N:\AudioHK\#ZwSp\#erl\Das 50er Jahre Schlager Karussel (2) CD1\Statt weiß trag rot Paul Kuhn.wav
Ich werde das mit CP 850 probieren, ob da auch die Umlaute korrekt angezeigt werden.
Beitrag automatisch zusammengeführt:
Ich habe mal CP850(=ANSI) und CP65001(=UTF8) probiert, jeweils ein DIR-Kommando für die Datei mit dem merkwürdigen Namen äöüß@€²³.xyz.
Die Ausgabe wurde jedesmal in eine Textdatei umgeleitet.
So werden die Dateien vom Editor und Notepad++ angezeigt:
Das ist jeweils die Ausgabe vom DIR bei CP 65001 (UTF-8).
Beide Editoren erkennen die Datei als UTF8 ud zeigen alles korrekt an.
FindStr findet die Zeichenfolge "äö" nur bei eingestellte Codepage 850 im 850er DIR.
Beide Editoren erkennen die mit CP850 erstellte DIR-Datei als ANSI und zeigen
den Dateinamen nicht richtig an.
Auch bei dem Wort "Datenträger" in der ersten Zeile wird das "ä" nicht dargestellt.
FindStr findet "äö" im 65001er DIR nicht, egal, welche CP eingestellt ist.
Ich werde also bei der Codepage 65001 bleiben.
Im System stelle ich dazu nirgendwo etwas ein.
Ich mache nur vor dem DIR-Kommando die Einstellung: CHCP 65001.
Das ganz machen natürlich fertge BAT-Dateien, die nur gestartet werden müssen,
wenn wieder neue Dateien hinzu gekommen sind .
Da ich sehr viel mit Visual Studio 2022 arbeite und dort UTF8 als Standarf benutzt wird,
funktionieren Auswertungen von derartigen DIR-Dateien auch nur mit CP 65001.
Wenn ich die 850er Datei mit Notepad++ und Codierung OEM850 öffne, sieht es korrekt aus.
Beim Windows-eigenen Editor kann man dazu nichts einstellen.
Hallo Argor,
ich bin ja eine "alter" Programmierer, und wenn soi einem etwas nicht passt, dann versucht er es selbst besser zu machen.
Ich habe bereits ein Fenster-Version gebastelt
Diese angezeigten Text-Dateien haben unterschiedliche Encodierungen.
In meinem Programm habe ich versucht, das Encoding einer Datei selbst zu ermitteln.
wenn es UTF8-deutsche Umlaute gibt => Enconding.UTF8
gibt es keine UTF8-Umlaute => Encoding.GetEncoding(850)
für alles andere => Encoding.Default
Dazu lese ich die ersten max. 6000 Bytes ein und untzersuche sie.
So machen es viele "gute" Programme, z.B. der Editor meines EF-Commanders.
Der erkennt auch automatisch die Encodierung.
Notepad++ muss man es mitteilen und der normale Editor erkennt es auch nicht.
Ich werde jetzt noch eine Kommandozeilenversion des FindStr Programmes machen,
und dieses wird die Encodierung auch erkennen, egal, ob Windows 7, 8, 10 oder 11.
Ja, das gibt es bei WIn10 auch. Win11 habe ich auch auf dem PC, nutze es aber nur sehr selten, da dort einiges nicht funtioniert.
Es hat sich dabei nichts geändert.
Das Programmieren in meinem Alter (Jahrgang 43) macht aber immer wieder Spass, vor allem, wenn man nach Wegen und Lösungen suchen muss, weil die nicht einfach auf der Strasse liegen.
Beitrag automatisch zusammengeführt:
Nach einem Neustart => funktioniert das in WIndows 10.
Die Dateien haben z.T. UTF8 od CP850.
Danke für den Hinweis.
Beitrag automatisch zusammengeführt:
Und so sieht es nach dem Setzen der UTF8-Hakens in Windows 11 aus
Da kann ich mir die Kommandozeilenversion wohl sparen.
Nochmals DANKE für Deine Mühe, das herauszufinden.
Visual Studio von Microsoft benutze ich seit vielen Jahren.
Die Version 2010 (13 Jahre alt) arbeitet komplett mit UTF8.
Warum muss man in dem neuen Win11 erst einen gut versteckten UTF8-Haken setzen,
damit UTF8-Dateien unterstützt werden.
Die "normalen" Windows-User, egal ob Win10 oder 11, finden diesen Halken niemals.
Ich hoffe, dass andere, die diesen Beitrag lesen, Deinen hilfreichen Hinweis auch nutzen können.
Auch der DIR-Befehl zeigt jetzt UTF8-Zeichen an, ohne dass man zuvor CHCP 65001 eingeben muss.
Und das klappt auch mit PowerShell
Beitrag automatisch zusammengeführt:
In meiner virtuelle Win8.1 Maschine gibt es bei
Win+R -> intl.cpl
diesen UTF8-Haken noch nicht. Deshalb klappt dort auch FindStr nicht
Beitrag automatisch zusammengeführt:
Wenn ich aber mein selbstgeschriebenes Programm in dem virtuellen Windows 8.1 benutze, dann klappt die Suche
Genau so im virtuellen Windows 7.
Es liegt also nicht am Windows-System, sondern daran, wie das jeweilige Programm arbeitet.
Auch der EF-Commander hat unter Windows 8.1 keine Code-Probleme, er erkennt ANSI, UTF8, ASCII usw. automatisch,
ohne dass irgenwelche Zusatzeinstellungen erforderlich sind.
Beitrag automatisch zusammengeführt:
Hallo Argor,
ich habe noch etwas herumprobiert und bin auf folgende durchaus übliche Codierungen gestossen, die von einigen Programmen gefragt oder ungefragt verwendet werden. CodePage 850 (wie von Dir als Standard empfohlen) UTF8 (mit und ohne BOM) - BOM = Hex ED BB BF am Dateianfang UTF16/ Unicode(mit und ohne BOM Hex FF EE am Dateianfang
Im Anhang befinden sich kleine Testdateien in diesen Codierungen.
Das Windows-eigene FindStr-Programm findet nach Setzen des Hakens nur Zeilen in UTF8-Dateien, nicht in UTF16 und nicht in Codepage850.
Mein eigenes FindStrHk Programm erkennt automatisch die Codierung der jeweiligen Datei und verarbeitet alle Dateien entsprechend korrekt.
Google: Such-Ergebnisse auf deutsch oder eine andere Sprache begrenzen - so wird es gemacht: Wenn Google zu bestimmten Suchanfragen hunderttausende Treffer ausgibt, ist das oftmals eher kontraproduktiv. Vor allem dann, wenn...