Поиск не-символов (индикаторы замены символов)

У меня есть текстовый файл (на самом деле.csv, экспортированный из.xlsx в LibreOffice) со строками, которые имеют тарабарщину при открытии в LibreOffice Calc. В VIM они выглядят следующим образом:

Joe User, joe@user.com, p@ss<96>w0rd

<96> был какой-то забавный персонаж, который был похож на -, но MS Office решил изменить его на что-то другое. Следовательно, файл не является ASCII:

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

Обратите внимание, что все эти "забавные" символы имеют кодовые точки меньше 127, поэтому я действительно не знаю, как Calc и VIM понимают, что это не ASCII. Какие другие кодировки имеют все кодовые точки ниже 127, то есть не являются ASCII-совместимыми? Кроме того, как я могу искать эти символы в VIM? Для не ASCII символов выше 127 я использую /[^\x00-\x127] искать, но конечно что не найду <96>,

Исходный файл.xlsx по-прежнему находится на компьютере Windows другого пользователя, и, конечно же, я могу убедиться в его MS Office, что <96> персонаж не ASCII 96 ", а скорее забавный вариант ".

1 ответ

Решение

<96> это не ASCII 96: это представление UTF-8 U+0096 (часть латинского 1 расширенная), "начало защищенной области", что бы это ни значило.

Вы можете ударить ga чтобы увидеть информацию о персонаже под курсором. За <96>, вы получите следующее:

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

Вы можете удалить этот символ из буфера с помощью:

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

который должен выглядеть так:

:%s/<96>//g

Или вы можете сделать:

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

или же:

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

или же:

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

Увидеть :help ga, :help utf-8-typing, :help \%u,

Другие вопросы по тегам