Очистить файлы исходного кода от невидимых символов

У меня странная проблема: где-то в моем 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:

  1. Открыть файл
  2. Файл> Повторно открыть с кодировкой> ISO-8859-1 (Latin1)
  3. Вы должны быть в состоянии увидеть и удалить первый символ в файле
  4. Файл> Сохранить
  5. Файл> Открыть заново с кодировкой> UTF8
  6. Файл> Сохранить

Это работает для меня каждый раз.

Это знак порядка байтов. Под Mac OS X: откройте окно терминала, перейдите к источникам и введите:

grep -rn $'\xFEFF' *

Он покажет вам номера строк и имена файлов, содержащие спецификацию.

Использовать блокнот плюс плюс.. есть возможность показать все символы

Я не пользователь Mac, но мой общий совет: когда все остальное терпит неудачу, используйте шестнадцатеричный редактор. Очень полезно в таких случаях.

Смотрите "Сравнение шестнадцатеричных редакторов" в WikiPedia.

В vi или vim будут отображаться любые символы, отличные от EOL.

Я уверен, что Textwrangler сделает это.

РЕДАКТИРОВАТЬ: ссылка VersionTracker как сайт Bare Bones, кажется, снова не работает.

Я знаю, что немного поздно отвечать на этот вопрос, но я добавляю, как изменить кодировку в Visual Studio, надеюсь, это будет полезно для тех, кто когда-нибудь это прочитает:

  1. Перейдите в Файл -> Сохранить (ваше имя файла) как...
  2. И в окне Проводника выберите маленькую стрелку рядом с кнопкой Сохранить -> нажмите Сохранить с кодировкой...
  3. Нажмите «Да» (в диалоговом окне «Хотите ли вы заменить существующий файл »).
  4. И, наконец, выберите, например, Unicode (UTF-8 без подписи) - это удалит спецификацию.
  1. Вставьте содержимое в Блокнот ++
  2. В кодировке меню -> Преобразовать в ANSI

И тебе хорошо идти.

Другие вопросы по тегам