Unsichtbare Zeichen

Als gebranntes Kind möchte ich auf eine nervige Dateinamenfalle hinweisen:
Ich konnte die Aktion 'Tag -> Dateiname' nicht durchführen, da sich ein nicht druckbares und selbst in Notepad++ nicht sichtbares Zeichen am Ende des Dateinamens befand. in der Regel ist es ein TAB oder ein unsichtbares Leerzeichen ALT 0160 (auf der Num-Tastatur)

Ich bin mir ziemlich sicher, dass kein Zeichen unter ASCII 32 im Dateinamen zulässig ist. TAB wäre ASCII 9. Unicode-Zeichen dagegen sind (oft) zulässig.

Notepad++ ist meines Wissens ein Texteditor, der den Datei-INHALT anzeigt, der Dateiname dient nur zum Öffnen und Speichern.

So sähe ALT-0160 nach dem gleichnamigen Text und einem Leerschlag INNERHALB einer Textdatei in Hexadeximzaler Schreibweise aus a0

"Normal" als geschütztes Leerzeichen:
image

Und der Vollständigkeit halber: Ein geschützter Leerschlag wird im Dateinamen (#1) akzeptiert:

Leider kann ich nicht mehr nachvollziehen, welches Zeichen es nun wirklich war.
Mein Ablauf war:
Ich drückte 'Tag-->Datename', dann kam die Fehlermeldung, dass die Syntax nicht stimme.
Ich setzte den Cursor in das Tagfeld 'Titel' ans Ende des Eintrages. Optisch war er direkt am letzten Zeichen.
Nun musste ich zweimal (!) Backspace drücken um den letzten Buchstaben zu löschen.
Das es ich im das 0160-Zeichen handelt, ist reine Vermutung, da es mich schon früher in anderen Projekten geärgert hat.
Sollte es wieder vorkommen werde ich mir einen HexEditor besorgen und nachsehen.
Danke dir für die Erklärung .

Kein Problem.
Es wäre interessant (bei Gelegenheit) zu erfahren, welches Zeichen zur Syntax-Fehlermeldung führt, ich konnte es mit ALT+0160 an verschiedensten Stellen in Tag -> Dateiname nicht reproduzieren.
Wenn Du 2 x Backspace drücken musstest, waren es mit grosser Wahrscheinlichkeit keine sichtbaren/druckbaren Zeichen, wie Du eingangs schon richtig vermutet hast.
Aber ALT+0160 ist von blossem Auge "als Abstand" sichtbar.

Es ist noch nicht das was ich meinte, aber passt zu diesem Thread:

Ich suche in einer meiner Sicherungen weiter
p.s. ich hab gerade den Befehl zum entfernen ungültiger Zeichen gefunden.
ich werde ihn aber erst anwenden, wenn ich das bemängelte Zeichen gefunden habe (ich tippe auf Zeichen 255)

In dem im Screendump abgebildeten Beispiel ist es das Zeichen 0A oder $char(10), ein Zeilenvorschub.
Man kann nach solchen Dateien filtern:
"$ifgreater($strstr(%title%,$char(10)),0,yes,no)" IS yes

Leider bürstet $validate() solche nicht-druckbaren Zeichen nicht raus aus dem Dateinamen.
MP3diags findet auch nicht die nicht-druckbaren Zeichen im Feld, sondern zeigt die nur an, ohne dass man den globalen Filter bekommt "ungültige Zeichen".

Man kann 0A aus einem Feld entfernen mit
$regexp(%title%,\n,)

die Kombination 0D 0A für Wagrenrücklauf/neue Zeile ist gültig, um einen Zeilenumbruch zu erzeugen, wie er z.B. zulässig ist in UNSYNCEDLYRICS und vermutlich auch COMMENT.

Deshalb würde ich mich auf die Suche machen und nach $char(9), $char(10) und $char(13) machen. Und auch versuchen, rauszufinden, wie diese Steuerzeichen in die Tag-Felder gekommen sind. Denn eigentlich haben die da nichts zu suchen.

keine Ahnung, wie diese Zeichen dahin gekommen sind.
ich hab ein Beispiel für die zweimalige Backspace - Situation gefunden:

und da zeigt sich 0D 0A wie oben beschrieben. Also da hat jemand hinten an den Titel noch eine Absatzmarkierung gesetzt.
Ich finde es recht ärgerlich, dass dies von keinem der sonst gerne genommenen Check-Programme als Macke genannt wird. (MP3diags zeigt das nicht als Fehler, MP3tag zeigt auch nichts).

Jetzt kannst du also nur noch nach diesen Steuerzeichen mit dem vorgeschlagenen Filter suchen und dann ersetzen.

0A (Line feed) ist im regulären Ausdruck \l
0D (Carriage Return) ist im regulären Ausdruck \r

den TAB (09) kriegt man mit \s+ weg - und dann müsstest du mal sehen, ob da auch noch andere Steuerzeichen verwendet wurden. Und Steuerzeichen sind, wie du angedeutet hast, wirklich unsichtbar - das besondere Leerzeichen 0160 dagegen wäre sichtbar.

An dieser Stelle wäre es meiner Ansicht nach eine gute MP3tag-Ergänzung, bei der Dateinamen-Generierung alle Steuerzeichen ebenso rauszubürsten wie die sichtbaren Zeichen mit besonderer Bedeutung.

2 Likes