Wie suche ich in gedit nach ungültigen Zeichen?

7

Ich habe ein Dilemma, ob ich eine Javascript-Datei bearbeiten soll oder nicht. Wenn ich es mit gedit öffne, wird die folgende Warnung angezeigt:

Die von Ihnen geöffnete Datei enthält einige ungültige Zeichen. Wenn Sie diese Datei weiter bearbeiten, können Sie dieses Dokument beschädigen. Sie können auch eine andere Zeichenkodierung auswählen und es erneut versuchen.

Die aktuelle Codierung ist UTF-8. Gibt es eine schnelle Möglichkeit, nach ungültigen Zeichen zu suchen, da die Datei über 100.000 Codezeilen enthält?

Fragenüberlauf
quelle
Ein schneller und schmutziger Weg wäre, die Datei zu bearbeiten (wahrscheinlich reicht das Hinzufügen und Löschen von etwas aus, um gedit glauben zu lassen, dass es geändert wurde) und als anderen Namen zu speichern. Der Vergleich des Originals und der geänderten Datei (Diff sollte hier helfen) sollte Ihnen sagen, was los ist.
vonbrand
@vonbrand, danke für deinen Vorschlag. Ich habe versucht, die Datei mit gedit unter einem anderen Namen zu speichern, aber die eigentliche Datei vermasselt und überschrieben. Hoffe, andere werden aus meinem Fehler lernen, indem sie zuerst die Datei kopieren, anstatt gedit zum Speichern zu verwenden: p
Fragenüberlauf

Antworten:

13

Da die Datei UTF-8 ist, können Sie isutf8 ausführen . Ein zusätzliches Utensilienpaket. Es gibt Ihnen sowohl Zeile als auch Zeichen und Offset für fehlerhafte Bytes.

Verwenden Sie dann xxd, hexdump oder ähnliches zum Analysieren.

Leider hört es beim ersten Absturz auf. Aber andererseits kommt es auf die Datei an. Könnte sein, dass es nur ein schlechtes Byte gibt;)

Haben Sie einen C-Code, der eine ähnliche Analyse durchführt, jedoch für die gesamte Datei. Es ist auf einer Festplatte irgendwo lange vergessen. Könnte versuchen, es zu finden, wenn es nötig ist.

Sonst ja, der schnelle und nicht so schmutzige Weg wäre, einen Unterschied zwischen einer mit gedit gespeicherten Kopie zu machen - wie von dem guten Herrn vorgeschlagen. @vonbrand .

Runium
quelle
+1 für isutf8. Für meine großen Dateien war die Ausgabe von diff zu umfangreich, um interpretiert zu werden, während isutf8 mir sofort die Zeilennummer und die Zeichenposition des ersten Nicht-UTF-8-Zeichens gab. Unter Ubuntu 16.04: sudo apt-get install moreutils
Steve Saporta