Плохое кодирование: почему мой средний размер тире по-другому кодируется на другом сервере? - PullRequest
5 голосов
/ 19 марта 2012

Мой символ "em dash" отображается по-разному на двух серверах.

Когда я захожу на сервер 1: -

Когда я захожу на сервер 2: Â

Я не использую соединение с базой данных, просто чистый HTML.

Ниже приведены первые 4 строки моего HTML-файла:

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <meta charset="utf-8" />

Пожалуйста, помогите мне здесь, я не вижу, что с ним не так.

-solution-

Как предложено ниже, я заменил свою черту на

&#8211;

Длячтобы сервер правильно отображал мой символ ►, мне пришлось поместить .htaccess в папку со следующей строкой кода:

AddDefaultCharset UTF-8

Спасибо всем!

Ответы [ 2 ]

5 голосов
/ 19 марта 2012

Это вполне может произойти, если серверы отправляют разные Content-Type заголовки.Точно один и тот же документ может иметь разное значение при использовании с другой информацией о кодировке.

Также возможно, что что-то меняется при загрузке файла (неправильные преобразования).Но в этом случае, как правило, проблема с заголовком, вероятно, объясняет разницу.

Если документ имеет кодировку UTF-8 и содержит «-» (это EN DASH, U + 2013, а не EM DASH),тогда он будет отображаться ОК, если в заголовках указано Content-Type: text/html;charset=utf-8.Но если заголовок имеет, например, windows-1252 вместо utf-8, то три байта, которые составляют кодированное UTF-8 представление «-», а именно 0xE2 0x80 0x93, будут интерпретироваться в соответствии с кодировкой windows-1252, что означает€».То, что происходит потом, немного неясно, если вы действительно видите, но более важно решить проблему с кодировкой, которая, вероятно, решит проблему.

Ознакомьтесь с учебником W3C по кодировкам .

1 голос
/ 19 марта 2012

Возможно, им подают разные кодировки. В UTF-8 вы можете просто включить m-тире напрямую (-), но если страница обслуживается как ASCII, она должна быть закодирована как &mdash;. Посмотрите на источник и посмотрите, какой он использует.

Я думаю, что это то, что происходит, потому что "-" имеет длину в несколько байтов, поэтому это будет интерпретироваться как несколько символов ASCII.

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