2016-09-20 3 views
24

Таким образом, эта страница представляет собой рендеринг с этими символами, и они находятся на этом веб-сайте или в приложении, но ни на одном другом сайте. Может ли кто-нибудь сказать мне 1) Что такое символ 2) почему он появляется только в одном браузере?Почему этот символ отображается в Chrome, а не в Firefox или Edge?

enter image description here

ответ

23

Этот символ U + 2028 Line Separator, который является своего рода символом новой строки. Подумайте об этом как эквивалент Unicode HTML <br>.

Относительно того, почему он показывает здесь: мое предположение было бы, что внутренняя база данных использует LSEP, чтобы не вступать в противоречии с буквальными переносами строки или HTML тегами (которые могут сломаться базой данных или вызвать ошибки безопасности), а также:

  1. серверные скрипты, которые преобразовывают базу данных в HTML пренебрегали заменить LSEP с <br>
  2. Chrome просто ломает стандарты, показывая LSEP как печати (видимый) характер, или
  3. Вы установили шрифт, который отображает LSEP, как печатный символ, который обнаруживает только Chrome. Чтобы выяснить, какой шрифт он есть, щелкните правой кнопкой мыши на нарушающем текст и нажмите «Осмотреть», а затем перейдите на вкладку «Вычисление» на правой панели. В самом низу вы увидите раздел с надписью «Rendered Fonts», который поможет вам найти обидающий шрифт.

Более подробная информация о сепараторе линии, выдержки из стандарта Unicode, глава 5.8, Newline Руководство (on p. 12 of this 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 Technical Report #13: Newline Guidelines

General Punctuation (U+2000–U+206F) chart PDF

SE: Why are there so many spaces and line breaks in Unicode?

SO: What is unicode character 2028 (LS/Line Separator) used for?

U+2028 on codepoints.net опечатка здесь говорит, что U + 2028 была добавлена ​​в v 1.1 стандарта Unicode, что неверно. - это в 1,0

+0

9999years Благодарим вас за отличную обратную связь. Я предполагаю, что это то, что вводится разработчиками приложения непреднамеренно, а затем анализируется моим веб-браузером как нечто иное, чем они ожидают? – Joseph

+0

@Joseph Я добавил небольшой список возможностей, которые приводят к вам * видя * глиф. – 9999years

+6

Как сделать свой браузер корректным? –

1

был добавлен Вы можете использовать этот инструмент ... http://www.nousphere.net/cleanspecial.php

... чтобы удалить все специальные символы, которые Chrome дисплеи.

Шаги: Вставьте свой HTML и очистите с помощью HTML-опции.

Вы можете вручную удалить символы в редакторе на этой странице и увидеть результат.

Вставить обратно свой HTML в файл и сохранить :)

+0

Почему это было запрещено? –

+0

Возможно, потому что он не ответил на вопрос. Я все равно нашел это полезным, так что +1 от меня. – Olaf

1

9999years ответы велик.

В случае использования Symfony с шаблоном Twig я бы рекомендовал проверить пустой блок Twig. В моем случае это был пустой блок Twig с невидимым персонажем внутри.

Символ LSEP отображается только на определенном устройстве/браузере. С другой стороны, у меня было пустое место над заголовком, и я не видел ни одного невидимого персонажа.

Мне пришлось проверить запрос GET, чтобы увидеть, что значение 1f18 было до открытого тега html.

Как только я удалил пустой блок Twig, он исчез.

надеюсь, что это может помочь кому-то один день ...

+0

Спасибо за ответ. Я использую Ruby on Rails, и этот символ LSEP появляется в одном конкретном случае сразу после разрыва строки в локалях. Прочитав ваш ответ, я просто пошел и снова набрал всю фразу, и символ исчез. Оказалось, что в этом месте было пустое пространство, потому что я скопировал весь текст из другого инструмента. –

0

Я согласен с @Kapil Bathija - В принципе вы можете скопировать & вставить HTML-код в http://www.nousphere.net/cleanspecial.php и преобразовать его.

Затем он преобразует специальные символы для вас. Просто удалите пробелы между словами, и вы поймете, что вам нужно нажать backspace 2x, то есть есть недопустимый символ, который нельзя перевести.

У меня была такая же проблема, и после этого она работала нормально.

1

Я недавно столкнулся с этой проблемой, попробовал ряд исправлений, но в конечном итоге мне пришлось вставить текст в VIM, и мне пришлось удалить лишнее пространство. Я попробовал несколько очистителей HTML, но никто из них не работал, VIM был ключом!