Mvc razor нормальный рендеринг странных персонажей

У меня есть простой вид бритвы, который, кажется, отображает - персонажа с забавными персонажами.

Здесь не задействованы ни javascript, ни динамическая генерация строк. Это простой HTML-код, в котором в качестве примера указано следующее:

Обратите внимание, что возможна онлайн-регистрация заезда.

Однако при просмотре в браузере он показывает следующее:

«Обратите внимание: онлайн-регистрация доступна»

Этого не происходит при локальной отладке, только после публикации на сервере.

Пример HTML:

<div class="row">
    <div class="col-md-12 ociTxt">
        Please note online check‐in is available
    </div>
</div>

класс "ociTxt" следующий:

.ociTxt {
color: red;
font-size: 13px;
margin-top: 15px;

}

Вот что показывает браузер:

Скриншот:

screenshot

Пожалуйста, помогите или сообщите мне о возможных причинах, таких как локаль и т. Д., Если это может иметь последствия.

Большое спасибо

0
0
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Символ между k и я не является обычным дефисом (ascii 0x2D, ​​символ Unicode вызывает Дефис-Минус).

На самом деле этот символ представляет собой кодовую точку Unicode U + 2010, которую Unicode называет Дефис.

Вы должны иметь возможность отображать его в формате html с помощью &#8208;. Другой вопрос, будет ли каждый браузер правильно его отображать.

Или просто отредактируйте его и используйте вместо него обычный символ ascii.

Так я и пришел к своему диагнозу. Я перерезал эту линию

Please note online check‐in is available

из примера html в вашем вопросе и вставил его в консоль Python 3.5, например:

>>> a="Please note online check‐in is available"
>>> a
'Please note online check‐in is available'

Затем я проверил, была ли вся строка ascii:

>>> a.encode("utf-8")
b'Please note online check\xe2\x80\x90in is available'

Это было не так. Итак, я установил положение рассматриваемого персонажа, выяснив, где находится k:

>>> a.index("k")
23

А затем я получил код символа 24.

>>> a[24]
'‐'
>>> ord(a[24])
8208

Еще примечательно то, что два дефиса не выглядят одинаково. Боюсь, мне придется показать вам это как снимок экрана, потому что разница в шрифтах, которые использует SO, не видна. Первая строка вставлена ​​из вашего вопроса, вторая - после того, как я заменил оскорбительный символ дефисом ascii.

Screenshot from PythonAnywhere console showing different hyphens.

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

Привет, спасибо за отзыв, однако есть еще несколько мест, где на странице используется дефис. Другой вопрос, это работало нормально около двух недель назад? Если причина вышесказанного, разве так не было с самого начала?

Maximus IVI 11.04.2018 15:48

@MaximusIVI Я отредактировал ответ, добавив демонстрацию правильности.

BoarGules 11.04.2018 16:52

Привет большое спасибо. Это привело меня в правильное русло. Я только что заметил кое-что очень странное. Как только решение публикуется на сервере, оно автоматически добавляет эти странные символы. Я перешел с веб-развертывания на файловую систему. Не уверен, почему сервер это делает. Я отредактировал файл на сервере, удалил забавные блоки и просто поставил дефис, и теперь он работает.

Maximus IVI 11.04.2018 22:54

Похоже, где-то на этом этапе было принято сознательное решение заменить типографские дефисы на Unicode Дефис-Минус. Если бы это была книга, это было бы совершенно правильным решением. Типографский дефис короче, толще и ближе к базовой линии, чем символ двойного назначения ascii. И правильный знак минус (Unicode U + 2212, Знак минус) шире, чтобы соответствовать перекладине знака +. Если политика требует типографских дефисов, то нужно просто позаботиться о преобразовании Дефис-Минус в соответствующий html-объект &#8208; вместо передачи недопустимых кодировок utf-8.

BoarGules 12.04.2018 10:24

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