Браузер отображает � вместо
у меня есть файл php, который имеет следующий текст:
<div class="small_italic">This is what you´ll use</div>
на одном сервере, это выглядит как:
This is what you´ll use
а на другом, как:
This is what you�ll use
почему должна быть разница и что я могу сделать, чтобы она выглядела правильно (как Апостроф)?
Примечание ко всем (на будущее)
я реализовал предложение Гордона / Гумбо, за исключением того, что я реализовал его на уровне сервера, а не уровень приложения. Обратите внимание, что (a) мне пришлось перезапустить сервер apache и, что более важно, (b) мне пришлось заменить существующие "плохие данные" исправленными данными в правильной кодировке.
/ etc / php.ini
default_charset = "iso-8859-1"
7 ответов
вы должны убедиться, что содержимое подается с правильной кодировкой:
либо отправить содержимое с заголовок, которая включает
<?php header("Content-Type: text/html; charset=[your charset]"); ?>
или если заголовки кодировок HTTP не существуют - вставить <META>
элемент на <head>
<meta http-equiv="Content-Type" content="text/html; charset=[your charset]" />
как имя атрибута предполагает, что http-equiv является эквивалентом заголовка ответа http, и пользовательские агенты должны использовать их в случае, если соответствующий http заголовки не установлены.
EDIT1: как Ханнес уже предложил в комментариях к вопросу, вы можете посмотреть на заголовки, возвращаемые вашим веб-сервером, чтобы увидеть, какую кодировку он обслуживает. Существует вероятность расхождения между двумя серверами. Поэтому измените [your charset]
часть выше к" рабочему " серверу.
EDIT2 для более подробного объяснения причин,см. ответ Гамбо.
дисплей ЗАМЕНА СИМВОЛА �
(U+FFFD) скорее всего означает, что вы указание вывода быть Unicode, но ваши данные нет.
в этом случае, если УДАРЕНИЯ ´
, например, кодируется с помощью ISO 8859-1, он закодирован с последовательностью байтов 0xB4, поскольку это кодовая точка этого символа в ISO 8859-1. Но эта последовательность байтов незаконна в кодировке Unicode, такой как UTF-8. В том в случае замены отображается символ U+FFFD.
чтобы исправить это, убедитесь, что вы правильное указание кодировки символов в соответствии с вашим фактическим (или наоборот).
простое решение-использовать ASCII
код для специальных символов.
значение apostrophe
символ в ASCII является ’
. попробуйте поместить это значение в свой html, и оно должно работать правильно для вас.
надеюсь, что это помогает!
подводя итог, может быть, немного:
- убедитесь, что файл, сохраненный на веб-сервере, имеет правильную кодировку
- убедитесь, что веб-сервер также поставляет его с правильной кодировкой
- убедитесь, что метатеги HTML установлены в правильную кодировку
- обязательно используйте" стандартные " специальные символы, т. е. используйте "вместо того, чтобы писать что-то вроде"кода Люка Скайуокера"
для кодирования UTF-8 может быть хорошим для тебя.
Если этот ответ помогает, пожалуйста, отметьте ответ как правильный или голосовать за нее. THX
установите набор символов браузеров в определенное значение:
Э. Г.
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
1) создать .htaccess
файл в корневом каталоге:
AddDefaultCharset utf-8
AddCharset utf-8 *
<IfModule mod_charset.c>
CharsetSourceEnc utf-8
CharsetDefault utf-8
</IfModule>
2) <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Это, вероятно, вызвано тем, что данные, которые вы вставляете на страницу с PHP, находятся в другой кодировке символов от самой страницы (наиболее распространенной итерацией является латинский 1 и другой UTF 8). Проверьте кодировку, используемую для страницы и для вашей базы данных. Есть вероятность, что будет несоответствие.