Einzelnen Beitrag anzeigen

Benutzerbild von kwhk
kwhk

Registriert seit: 25. Mär 2009
Ort: Dresden
168 Beiträge
 
Delphi 10.3 Rio
 
#1

DOS/AscII-Code für €-Zeichen

  Alt 24. Dez 2018, 11:23
Ich benutze für ein Verzeichnis meiner Dateien gern den DIR-Befehl: z.B. dir X:\*.mp4 /S>xMP4.txt
Alle Musik-Titel, Videos usw. stehen in Ordnern, deren Inhalt ich mittels DIR-Befehl in einer Datei speichere.
Die Dateinamen werden dabei im DOS-AsciII-Code (8-bit) gespeichert, genau so, wie zu DOS-Zeiten schon.
Mit einem kleinen Programm, wandle ich diejenigen Sonderzeichen derart um, dass ich sie mit einem normalen Text-Editor lesen und in der Datei suchen kann. Dabei ist mir aufgefallen, dass das DIR-Kommando ein €-Zeichen immer als Hex-3F darstellt. Das 3F-Zeichen ist aber normalerweise der Code für ein ?-Zeichen (Fragezeichen). Es könnte ja sein, dass der DIR-Programmierer sich gesagt hat, ein ? darf im Dateinamen nicht stehen, weil es ein Joker-Zeichen ist. Da kann ich 3F für das neue gültige €-Zeichen nehmen, das es ja nun bereits seit beinahe 20 Jahren auch auf jeder Tastatur gibt.

Das €-Zeichen hat normalerweise den Code 0x20AC (dezimal 8364), im Dateinamen der Directorys gibt es für ein Zeichen aber nur ein Byte, da kann man 0x20AC nicht unterbringen.

Hier ein Beispiel, wie es aussieht, wenn man den Namen aus der DIR-Datei anschaut, leider wird das €-Zeichen nur als #8364 angezeigt, deshalb schreibe ich stattdessen ein E.
Code:
8E 99 9A 3F 84 94 81 E1  2E 3F FD FC 0D 0A
Ä  Ö  Ü  E  ä  ö  ü  ß   .  E  ²  ³  CR LF

So sieht es in der Dir-Datei selbst aus

Datenträger in Laufwerk G: ist Sea_G_2000
Volumeseriennummer: 72D4-C2CC

Verzeichnis von G:\u\3

24.12.2018 10:58 <DIR> .
24.12.2018 10:58 <DIR> ..
24.12.2018 10:55 433 ÄÖÜ?äöüß.?²³
1 Datei(en), 433 Bytes


Die angezeigten ? sind aber tatsächlich €-Zeichen: ÄÖÜ€äöüß.€²³
Sicherlich wird man nicht so häufig ein €-Zeichen im Dateinamen finden, es ist aber ein zuläßßiges Zeichen, wie sicherlich viele andere aus dem UDF-8-Bereich auch.
Hartmut

Geändert von kwhk (24. Dez 2018 um 11:34 Uhr)
  Mit Zitat antworten Zitat