Символ <0xEF, 0xBB, 0xBF> отображается в файлах. Как их убрать? - PullRequest
81 голосов
/ 04 сентября 2011

Я выполняю сжатие файлов JavaScript, и компрессор жалуется, что в моих файлах есть символ .

Как я могу найти этих персонажей и удалить их?

Ответы [ 13 ]

171 голосов
/ 28 февраля 2013

Вы можете легко удалить их, используя vim , вот шаги:

1) В вашем терминале откройте файл, используя vim:

vim file_name

2) Удалить все спецификацию символов:

:set nobomb

3) Сохраните файл:

:wq
26 голосов
/ 12 ноября 2014

Другой метод удаления этих символов - использование Vim :

vim -b fileName

Теперь эти «скрытые» символы видны (<feff>) и могут быть удалены.

17 голосов
/ 04 сентября 2011
perl -pi~ -CSD -e 's/^\x{fffe}//' file1.js path/to/file2.js

Я бы предположил, что инструмент сломается, если в ваших файлах есть другой utf-8, но если нет, возможно, этот обходной путь может вам помочь. (Не проверено ...)

Редактировать : добавлена ​​опция -CSD, согласно комментарию tchrist.

16 голосов
/ 24 апреля 2013

Спасибо за предыдущие ответы, вот вариант sed (1) на всякий случай:

sed '1s/^\xEF\xBB\xBF//'
15 голосов
/ 07 апреля 2015

В Unix / Linux:

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

В MacOSX

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

Обратите внимание на $ after sed для mac.

В Windows

Существует Super Sed улучшенная версия sed. Для Windows это отдельный .exe-файл, предназначенный для запуска из командной строки.

5 голосов
/ 26 ноября 2013

Использование tail может быть проще:

tail --bytes=+4 filename > new_filename
3 голосов
/ 03 апреля 2012

@ Решение tripleee не сработало для меня. Но смена кодировки файла на ASCII и снова на UTF-8 добилась цели: -)

2 голосов
/ 10 марта 2016

Я использовал vimgrep для этого

:vim "[\uFEFF]" *

также обычная команда поиска vim

/[\uFEFF]
1 голос
/ 19 мая 2017

Команда 'file' показывает, присутствует ли спецификация:

Например: «file myfile.xml» отображает: «Документ XML 1.0, текст UTF-8 Unicode (с спецификацией), с очень длинными строками, с разделителями строк CRLF»

dos2unix удалит спецификацию.

1 голос
/ 10 января 2015

В Sublime Text вы можете установить пакет Highlighter , а затем настроить регулярное выражение в своих пользовательских настройках.

Здесь я добавил \uFEFF в конец свойства 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
}

Чтобы перезаписать настройки пакета по умолчанию, поместите файл здесь:

~ / .config / возвышенного-текст-3 / Пакеты / Пользователь / highlighter.sublime-настройки

...