Очистить файлы исходного кода от невидимых символов
У меня странная проблема: где-то в моем HTML/PHP-коде есть скрытый, невидимый символ, от которого я не могу избавиться. Скопировав его из Firebug и преобразовав его, я идентифицировал его как 
или "ноль ширины без перерыва". Он отображается как непустой текстовый узел на моем сайте и вызывает серьезную проблему с макетом.
Проблема в том, что я не могу избавиться от этого. Я не вижу его в своих файлах даже при включении Invisibles (d'uh). Кажется, я не могу его найти, ни один инструмент поиска, похоже, не подхватил его. Я переписал свой код там, где он мог бы быть, но он кажется где-то глубже в одном из файлов фреймворка.
Какие-нибудь хорошие инструменты для поиска символов по кодам в файлах или что-то в этом роде? (Mac OS X)
9 ответов
Вы не получаете символ в редакторе, потому что вы не можете найти его в текстовых редакторах. #FEFF или #FFFE - это так называемые метки порядка байтов. Это изобретение Microsoft, позволяющее определить в файле Unicode порядок хранения многобайтовых символов.
Чтобы избавиться от этого, попросите вашего редактора сохранить файл как ANSI/ISO-8859 или как Unicode без спецификации. Если ваш редактор не может этого сделать, вам придется либо переключать редакторы (к сожалению), либо использовать какой-либо инструмент усечения, например, шестнадцатеричный редактор, который позволяет вам увидеть, как на самом деле выглядит файл.
Похоже, что в Google TextWrangler имеет режим "UTF-8, no BOM". В противном случае, если вам удобно с терминалом, вы можете использовать Vim:
:set nobomb
и сохраните файл. Presto!
Символы всегда самые первые в текстовом файле. Как я уже упоминал, редакторы с поддержкой спецификации не будут показывать ее вам вообще.
Ура,
Если вы используете Textmate и проблема в файле UTF-8:
- Открыть файл
- Файл> Повторно открыть с кодировкой> ISO-8859-1 (Latin1)
- Вы должны быть в состоянии увидеть и удалить первый символ в файле
- Файл> Сохранить
- Файл> Открыть заново с кодировкой> UTF8
- Файл> Сохранить
Это работает для меня каждый раз.
Это знак порядка байтов. Под Mac OS X: откройте окно терминала, перейдите к источникам и введите:
grep -rn $'\xFEFF' *
Он покажет вам номера строк и имена файлов, содержащие спецификацию.
Использовать блокнот плюс плюс.. есть возможность показать все символы
Я не пользователь Mac, но мой общий совет: когда все остальное терпит неудачу, используйте шестнадцатеричный редактор. Очень полезно в таких случаях.
Смотрите "Сравнение шестнадцатеричных редакторов" в WikiPedia.
В vi или vim будут отображаться любые символы, отличные от EOL.
Я уверен, что Textwrangler сделает это.
РЕДАКТИРОВАТЬ: ссылка VersionTracker как сайт Bare Bones, кажется, снова не работает.
Я знаю, что немного поздно отвечать на этот вопрос, но я добавляю, как изменить кодировку в Visual Studio, надеюсь, это будет полезно для тех, кто когда-нибудь это прочитает:
- Перейдите в Файл -> Сохранить (ваше имя файла) как...
- И в окне Проводника выберите маленькую стрелку рядом с кнопкой Сохранить -> нажмите Сохранить с кодировкой...
- Нажмите «Да» (в диалоговом окне «Хотите ли вы заменить существующий файл »).
- И, наконец, выберите, например, Unicode (UTF-8 без подписи) - это удалит спецификацию.
- Вставьте содержимое в Блокнот ++
- В кодировке меню -> Преобразовать в ANSI
И тебе хорошо идти.