Estou compactando arquivos JavaScript e o compressor está reclamando que meus arquivos têm 
caracteres.
Como posso pesquisar esses caracteres e removê-los?
Estou compactando arquivos JavaScript e o compressor está reclamando que meus arquivos têm 
caracteres.
Como posso pesquisar esses caracteres e removê-los?
U+FEFF
é o ponto de código Unicode usado para um BOM, mas o próprio BOM é como esse ponto de código é codificado (UTF-8 0xEF 0xBB 0xBF
:, UTF-16LE:, 0xFF 0xFE
UTF-16BE:, 0xFE 0xFF
etc). Portanto, os arquivos em questão são codificados em UTF-8, que o compressor detecta ao decodificá-los para pontos de código Unicode reais.
Respostas:
perl -pi~ -CSD -e 's/^\x{fffe}//' file1.js path/to/file2.js
Eu presumo que a ferramenta falhará se você tiver outro utf-8 em seus arquivos, mas se não tiver, talvez esta solução alternativa possa ajudá-lo. (Não testado ...)
Editar : adicionada a -CSD
opção, conforme comentário do cristão.
-CSD
switch, ou com o PERL_UNICODE
envariable definido como SD
, para que funcione.
perl -CSD -pe 's/^\x{feff}//' file.csv
:, observe a mudança de <fffe> para <feff>.
Você pode removê-los facilmente usando o vim . Aqui estão as etapas:
1) Em seu terminal, abra o arquivo usando o vim:
vim file_name
2) Remova todos os caracteres BOM :
:set nobomb
3) Salve o arquivo:
:wq
Outro método para remover esses caracteres - usando o Vim :
vim -b fileName
Agora, esses caracteres "ocultos" são visíveis ( <feff>
) e podem ser removidos.
Obrigado pelas respostas anteriores, aqui está uma variante sed (1) para o caso de:
sed '1s/^\xEF\xBB\xBF//'
Em Unix / Linux:
sed 's/\xEF\xBB\xBF//' < inputfile > outputfile
No MacOSX
sed $'s/\xEF\xBB\xBF//' < inputfile > outputfile
Observe o $ após sed para mac.
No Windows
Existe Super Sed uma versão aprimorada do sed. Para o Windows, é um .exe autônomo, destinado à execução na linha de comando.
$'\xEF\xBB\xBF//'
é um recurso Bash, não particularmente um recurso Mac ou OSX. Com essa estrutura, o Bash analisará as sequências de escape em bytes reais antes de passar a linha de comando para sed
. Dependendo da sua sed
variante, isso pode ou não funcionar (embora tenha certeza de que é útil para os usuários do OSX saber que deve funcionar fora da caixa para eles).
A solução do @tripleee não funcionou para mim. Mas mudar a codificação do arquivo para ASCII e novamente para UTF-8 resolveu :-)
Eu usei o vimgrep para isso
:vim "[\uFEFF]" *
também comando de pesquisa normal do vim
/[\uFEFF]
O comando 'arquivo' mostra se o BOM está presente:
Por exemplo: 'file myfile.xml' exibe: "Documento XML 1.0, texto UTF-8 Unicode (com BOM), com linhas muito longas, com terminadores de linha CRLF"
dos2unix irá remover o BOM.
No Windows, você pode usar o utilitário de recodificação backported da UnxUtils .
Em Sublime Text você pode instalar o pacote Highlighter e personalizar a expressão regular nas configurações do usuário.
Aqui eu adicionei \uFEFF
ao final da highlighter_regex
propriedade.
{
"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 substituir as configurações do pacote padrão, coloque o arquivo aqui:
~ / .config / sublime-text-3 / Packages / User / highlighter.sublime-settings
Sugiro o uso da ferramenta "dos2unix", teste para rodar 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.
bomstrip
não estava facilmente disponível no meu mac - então find . -type f -exec dos2unix '{}' +
Salve o arquivo sem assinatura de código.
<U+FEFF>
, esse é<0xEF,0xBB,0xBF>
o BOM dos arquivos UTF8, então você deve alterar o título. Como você gostaria de removê-los? Por fadas mágicas? Por ferramenta de linha de comando? Editando um por um? O Notepad ++ pode alterar a codificação para UTF8 sem BOM. Por exemplo, pesquisando no Google 5 segundos de "strip BOM utf8", encontrei isso para Linux: ueber.net/who/mjl/projects/bomstrip