Вопрос по character, unicode – Очистить файлы исходного кода от невидимых символов

31

У меня странная проблема: где-то в моем коде HTML / PHP есть скрытый, невидимый символ, от которого я, похоже, не могу избавиться. Скопировав его из Firebug и преобразовав его, я идентифицировал его как или «пространство без разрывов с нулевой шириной». Он отображается как непустой текстовый узел на моем сайте и вызывает серьезную проблему с макетом.

Проблема в том, что я не могу избавиться от этого. Я не могу видеть это в своих файлах, даже когда включаю Invisibles (d 'uh). Кажется, я не могу его найти, ни один инструмент поиска, похоже, не подхватил его. Я переписал свой код там, где он мог бы быть, но он кажется где-то глубже в одном из файлов фреймворка.

Какие-нибудь хорошие инструменты для поиска символов по кодам в файлах или что-то в этом роде? (Mac OS X)

Не вините себя слишком сильно. Если макет ломается из-за неразрывного пробела нулевой ширины, средство визуализации неправильно понимает либо серозависимую, либо неразрывную часть. MSalters
Это & APOS; S спорно я полагаю. Неразрывный пробел соединял два правильных пробельных символа, поэтому он должен отображать что-то, что я предполагаю. И что-то получилось раздавленным между двумя полноразмерными DIV без полей, вот почему это проявилось очень заметно. Я скорее обвиняю Microsoft в том, что она изобрела спецификации для начала. ;-) deceze♦

Ваш Ответ

7   ответов
-3
Paste the content in Notepad++ In Menu Encoding -> Convert To ANSI

10

Open the file File > Re-open with encoding > ISO-8859-1 (Latin1) You should be able to see and remove the first character in file File > Save File > Re-open with encoding > UTF8 File > Save

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

37

потому что вы не можете найти его в текстовых редакторах. #FEFF или #FFFE - это так называемыеметки порядка байтов, Это изобретение Microsoft, позволяющее определить в файле Unicode порядок хранения многобайтовых символов.

Чтобы избавиться от этого, попросите вашего редактора сохранить файл как ANSI / ISO-8859 или как Unicode.without BOM, Если ваш редактор не может этого сделать, вам придется либо переключать редакторы (к сожалению), либо использовать какой-либо инструмент усечения, например, шестнадцатеричный редактор, который позволяет вам увидеть, как файлreally выглядит.

Похоже, что в Google TextWrangler имеет «UTF-8, нет спецификации». Режим. В противном случае, если вам удобно работать с терминалом, вы можете использовать Vim:

:set nobomb

и сохраните файл. Presto!

Персонажи всегдаvery first в текстовом файле. Как я уже упоминал, редакторы с поддержкой спецификации не будут показывать ее вам вообще.

Ура,

Я видел это раньше, но обычно это выглядело как мусор в верхней части страницы. Кажется, что это труднее найти, когда он находится в середине страницы ...? В любом случае, спасибо! :) deceze♦
Извините, «вы не получаете» оскорбления не было, оно должно заканчиваться запятой. Мои извенения!
Это может произойти в середине страницы, когда вы используете оператор включения PHP с включенным файлом BOM. В противном случае это обычно не должно появляться (хотя этоis стандартный символ Unicode и может использоваться как таковой).
Теперь это объяснило бы это, но без оскорблений. Странно, что это переводится в правильный символ в браузере. Я поищу это ... deceze♦
Да, это было действительно так. Интересно, откуда это взялось, так как мой редактор (TextMate) не сохраняет спецификации ... deceze♦
2

когда все остальное терпит неудачу, используйтеhex editor, Очень полезно в таких случаях.

Увидеть& quot; Сравнение шестнадцатеричных редакторов & quot; в википедии.

5

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

grep -rn $'\xFEFF' *

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

Поскольку это почти наверняка первые два байта файла, проблема состоит в том, чтобы убрать его. Я не совсем знаком с awk, но он должен быть однострочным, чтобы удалить первые два байта файла.
0

TextWrangler сделаю это.

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

2

ы

Как уже говорилось, я больше ищу инструмент Mac OS X (или UNIX). deceze♦
да, я пропустил это ... я думаю, что видел кое-где, где это можно запустить с помощью кроссовера. не очень хорошее решение, хотя
Я не думаю, что «Блокнот плюс плюс» покажет «без перерыва». и другие пробельные символы, хотя он будет показывать возврат каретки и перевод строки ... Я думаю, что вы должны переключить кодировку, которая объясняется в принятом ответе
Кстати: Notepad ++ имеет возможность сохранять файлы Unicode без спецификации. На тот случай, если вы перейдете на Windows ;-)

Похожие вопросы