Procura por não caracteres (indicadores de substituição de caracteres)

1

Eu tenho um arquivo de texto (na verdade, um arquivo .csv exportado de .xlsx no LibreOffice) com linhas que têm um jargão quando aberto no LibreOffice Calc. No VIM, eles aparecem da seguinte maneira:

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

O <96> era um personagem engraçado semelhante ao - , mas o MS Office decidiu alterá-lo para outra coisa. O arquivo é, portanto, não ASCII:

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

Note que todos esses personagens 'engraçados' têm pontos de código inferiores a 127, então eu realmente não sei como o Calc e o VIM percebem que isso não é ASCII. Quais outras codificações têm todos os pontos de código abaixo de 127, ou seja, não são compatíveis com ASCII? Além disso, como posso procurar por esses caracteres no VIM? Para caracteres não-ASCII acima de 127 eu uso /[^\x00-\x127] para pesquisar, mas é claro que não encontrarão <96> .

O arquivo .xlsx original ainda é encontrado no computador Windows de outro usuário, e com certeza eu posso verificar em seu MS Office que o caractere <96> não é ASCII 96 ' mas sim alguma variação engraçada em '.

    
por dotancohen 04.05.2014 / 09:07

1 resposta

2

<96> não é ASCII 96: é a representação de UTF-8 U+0096 (parte do latim 1 estendido), "início da área protegida", seja lá o que isso signifique.

Você pode pressionar ga para ver informações sobre o caractere sob o cursor. Para <96> , você obteria o seguinte:

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

Você pode remover esse caractere do seu buffer com:

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

que deve se parecer com:

:%s/<96>//g

Ou você pode fazer:

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

ou:

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

ou:

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

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

    
por 04.05.2014 / 14:24