it-swarm.dev

Caractere <0xEF, 0xBB, 0xBF> aparecendo em arquivos. Como removê-los?

Eu estou fazendo compressão de arquivos JavaScript e o compressor está reclamando que meus arquivos têm o caracter  neles. 

Como posso procurar por esses caracteres e removê-los? 

78
Quintin Par
Perl -pi~ -CSD -e 's/^\x{fffe}//' file1.js path/to/file2.js

Eu suponho que a ferramenta irá quebrar se você tiver outros utf-8 em seus arquivos, mas se não, talvez essa solução alternativa possa ajudá-lo. (Não testado ...)

Edit : adicionada a opção -CSD, conforme comentário do tchrist.

17
tripleee

Você pode facilmente removê-los usando vim, aqui estão os passos:

1) No seu terminal, abra o arquivo usando o vim:

vim file_name

2) Remova todos os caracteres BOM :

:set nobomb

3) Salve o arquivo:

:wq
161
Mohammad Anini

Outro método para remover esses caracteres - usando Vim :

vim -b fileName

Agora, esses caracteres "ocultos" são visíveis (<feff>) e podem ser removidos.

25
ROMANIA_engineer

Obrigado pelas respostas anteriores, aqui está uma variante do sed (1) para o caso de:

sed '1s/^\xEF\xBB\xBF//'
16
Michael Shigorin

No Unix/Linux:

sed 's/\xEF\xBB\xBF//' < inputfile > outputfile

On MacOSX

sed $'s/\xEF\xBB\xBF//' < inputfile > outputfile

Observe o $ depois de sed para mac.

No Windows

Existe Super Sed uma versão melhorada do sed. Para o Windows, este é um exe autônomo, destinado a ser executado a partir da linha de comando.

15
Masum

Usando tail pode ser mais fácil: 

tail --bytes=+4 filename > new_filename
5
Dzanvu

A solução do @tripleee não funcionou para mim. Mas mudar a codificação do arquivo para ASCII e novamente para UTF-8 foi o truque :-)

3
Pablo Torrecilla

Eu usei o vimgrep para isso 

:vim "[\uFEFF]" *

também comando normal de busca vim

/[\uFEFF]
2
Olexiy Zamkoviy

No Windows, você pode usar o utilitário backported recode de UnxUtils .

1
Nikita Koksharov

Em Sublime Text você pode instalar o Highlighter package e depois personalizar a expressão regular nas configurações do usuário.

Aqui eu adicionei \uFEFF ao final da propriedade highlighter_regex

{
    "highlighter_enabled": true,
    "highlighter_regex": "(\t+ +)|( +\t+)|[\u2026\u2018\u2019\u201c\u201d\u2013\u2014\uFEFF]|[\t ]+$",
    "highlighter_scope_name": "invalid",
    "highlighter_max_file_size": 1048576,
    "highlighter_delay": 3000
}

Para sobrescrever as configurações do pacote padrão, coloque o arquivo aqui:

~/.config/sublime-text-3/Pacotes/Usuário/highlighter.sublime-settings

1
JJD

O comando 'file' mostra se a lista de materiais está presente:

Por exemplo: 'file myfile.xml' exibe: "Documento XML 1.0, texto Unicode UTF-8 (com BOM), com linhas muito longas, com terminadores de linha CRLF"

dos2unix removerá a lista de materiais.

1
LittletonDoug

Salve o arquivo sem assinatura de código.

0
Masood Moshref

Eu estou sugerir o uso da ferramenta "dos2unix", por favor, teste para executar dos2unix ./thefile.js.

Se necessário, tente usar algo assim para vários arquivos:

for x in $(find . -type f -exec echo {} +); do dos2unix $x ; done

Meus cumprimentos.

0
Wellington1993