Поиск не-символов (индикаторы замены символов)
У меня есть текстовый файл (на самом деле.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
,