Таким образом, эта веб-страница представляет собой рендеринг с этими символами, и они находятся на этом веб-сайте или в приложении, но ни на одном другом сайте. Может ли кто-нибудь сказать мне 1) Какой символ 2) почему он отображается только в одном браузере?
Почему этот символ отображается в Chrome, а не в Firefox или Edge?
Ответ 1
Этот символ является разделителем строк U + 2028, который является своего рода символом новой строки. Подумайте об этом как эквивалент Unicode HTML <br>
.
Что касается причин, почему это проявляется здесь: я предполагаю, что внутренняя база данных использует LSEP, чтобы не конфликтовать с буквальными символами новой строки или HTML-тегами (которые могут привести к повреждению базы данных или вызвать ошибки безопасности) и либо:
- Сценарии на стороне сервера, которые преобразуют базу данных в HTML, игнорируются, чтобы заменить LSEP на
<br>
- Chrome просто нарушает стандарты, отображая LSEP как печатный (видимый) символ, или
- У вас установлен шрифт, который отображает LSEP как символ печати, который обнаруживает только Chrome. Чтобы выяснить, какой шрифт он есть, щелкните правой кнопкой мыши на нарушающем текст и нажмите "Осмотреть", а затем перейдите на вкладку "Вычисление" на правой панели. В самом низу вы должны увидеть раздел с надписью "Rendered Fonts", который поможет вам найти нарушающий шрифт.
Дополнительная информация о разделителе строк, взятом из стандарта Unicode, глава 5.8, Новые правила (на стр. 12 этого PDF):
Сепаратор линии и разделитель параграфов
Сепаратор абзаца, не зависящий от того, как он закодирован, используется для обозначения разделение между параграфами. Разделитель строк указывает, где разрыв строки один должен произойти, как правило, в абзаце. Например:
Это абзац с разделителем строк в этот момент,
в результате чего слово "причинение" появляется на другой строке, но не вызывает типичный абзац абзаца, нарушение предложения, межстрочный интервал или изменение в флеш (правый, центральный или левый абзацы).Для сравнения, разделители строк в основном соответствуют HTML
<br>
, и разделители абзацев для более старого использования HTML<P>
(современные HTML-ограничения абзацев, заключая их в<P>...</P>
). В текстовых процессорах, параграф разделители обычно вводятся с клавиатурыRETURN
илиENTER
; линия разделители обычно вводятся с использованием измененныхRETURN
илиENTER
, таких какSHIFT-ENTER
.Разделитель записей используется для разделения записей. Например, при обмене табличные данные, общий формат - это вкладка-разделение ячеек и использование
CRLF
в конце строки ячеек. Эта функция не является точно такой же, как строка разделение, но часто используются одни и те же символы.Традиционно
NLF
запускается как разделитель строк (и иногда записывается разделитель). Он по-прежнему используется как разделитель строк в простых текстовых редакторах, таких как программных редакторов. Поскольку платформы и программы начали обрабатывать обработку текстов с автоматическим оберткой, эти символы были переинтерпретированы, чтобы разделители абзацев. Например, даже такие простые программы, как Windows Программа "Блокнот" и программа Mac SimpleText интерпретируют свои платформыNLF
как разделитель абзацев, а не разделитель строк. Как толькоNLF
был переинтерпретирован обозначить разделитель абзацев, в некоторых случаях другой контрольный характер нажата в качестве разделителя строк. Например, вертикальная табуляция VT используется в Microsoft Word. Однако выбор символа для разделителя строк еще менее стандартизирован, чем выбор символа дляNLF
. Многие Интернет протоколов и много существующего текста обрабатываютNLF
как разделитель строк, поэтому разработчик не может просто рассматриватьNLF
как разделитель абзацев во всех обстоятельства.
Дальнейшее чтение:
Технический отчет Unicode № 13: Принципы новой строки
Диаграмма общей пунктуации (U + 2000-U + 206F) PDF
SE: Почему в Unicode так много пробелов и разрывов строк?
SO: Что такое символ Unicode 2028 (LS/Line Separator), используемый для?
U + 2028 на codepoints.net Опечатка здесь говорит о том, что U + 2028 был добавлен в версии 1.1 стандарта Unicode, который false - он был добавлен в 1.0
Ответ 2
Вы можете использовать этот инструмент... http://www.nousphere.net/cleanspecial.php
... удалить все специальные символы, отображаемые в Chrome.
Шаги: Вставьте свой HTML и очистите с помощью HTML-опции.
Вы можете вручную удалить символы в редакторе на этой странице и увидеть результат.
Вставьте обратно свой HTML файл в файл и сохраните:)
Ответ 3
9999years ответы велики.
Если вы используете Symfony с шаблоном Twig, я бы рекомендовал проверить пустой блок Twig. В моем случае это был пустой блок Twig с невидимым char внутри.
LSEP char отображается только на определенном устройстве/браузере. С другой стороны, у меня было пустое пространство над заголовком, и я не видел невидимого char.
Мне пришлось проверить запрос GET, чтобы увидеть, что значение 1f18 было до открытого тега html.
Как только я удалил пустой блок Twig, он исчез.
надеюсь, что это может помочь кому-то в один прекрасный день...
Ответ 4
Недавно я столкнулся с этой проблемой, попробовал ряд исправлений, но в конечном итоге мне пришлось вставить текст в VIM, и мне пришлось удалить лишнее пространство. Я попробовал несколько очистителей HTML, но никто из них не работал, VIM был ключом!
Ответ 5
Я согласен с @Kapil Bathija. В принципе вы можете скопировать и вставить свой HTML-код в http://www.nousphere.net/cleanspecial.php и преобразовать его.
Затем он преобразует специальные символы для вас - просто удалите пробелы между словами, и вы поймете, что вам нужно нажать backspace 2x, то есть есть недопустимый символ, который нельзя перевести.
У меня была такая же проблема, и после этого она работала отлично.