Suche nach Nicht-Zeichen (Zeichenersetzungsindikatoren)

1

Ich habe eine Textdatei (tatsächlich eine CSV-Datei, die aus XLSX in LibreOffice exportiert wurde) mit Zeilen, die beim Öffnen in LibreOffice Calc einen Kauderwelsch aufweisen. In VIM sehen sie folgendermaßen aus:

Joe User, [email protected], p@ss<96>w0rd

Das <96> war eine lustige Figur, die ähnlich war -, aber MS Office hat beschlossen, sie in etwas anderes zu ändern. Die Datei ist daher nicht ASCII:

$ file -i Users.csv
Users.csv: text/plain; charset=unknown-8bit

Beachten Sie, dass alle diese "lustigen" Zeichen Codepunkte unter 127 haben, sodass ich wirklich nicht weiß, wie Calc und VIM erkennen, dass dies kein ASCII-Code ist. Welche anderen Codierungen haben alle Codepunkte unter 127, dh sind nicht ASCII-kompatibel? Wie kann ich in VIM nach diesen Zeichen suchen? Für Nicht-ASCII-Zeichen über 127 verwende ich /[^\x00-\x127]zum Suchen, aber das wird natürlich nicht gefunden <96>.

Die ursprüngliche XLSX-Datei befindet sich immer noch auf dem Windows-Computer eines anderen Benutzers, und ich kann in seinem MS Office mit Sicherheit überprüfen, dass das <96>Zeichen nicht ASCII 96 ist `, sondern eine lustige Variante von '.

dotancohen
quelle

Antworten:

2

<96>ist nicht ASCII 96: es ist die Darstellung von UTF-8 U+0096(Teil von Latin 1 erweitert), "Beginn des geschützten Bereichs", was auch immer das bedeutet.

Sie können drücken ga, um Informationen zu dem Zeichen unter dem Cursor anzuzeigen. Für <96>würden Sie das folgende erhalten:

<<96>> 150, Hex 0096, Octal 226

Sie können dieses Zeichen aus Ihrem Puffer entfernen, indem Sie:

:%s/<C-v>u0096//g

das sollte so aussehen:

:%s/<96>//g

Oder Sie können tun:

:%s/\%u0096//g    " hex form

oder:

:%s/\%d150//g     " decimal form

oder:

:%/\%o226//g      " octal form

Siehe :help ga, :help utf-8-typing, :help \%u.

romainl
quelle
Vielen Dank! Ich dachte, dass <96>es sich um eine Dezimalzahl handelt, aber ich wusste nicht, dass es sich um eine Hexadezimalzahl handelt und daher über \ x7F (127) liegt. Vielen Dank!
Dotancohen