Символы вопросительного знака отображаются в тексте. Почему это?

У меня есть резервный сервер, который автоматически выполняет резервное копирование моего живого сайта, как файлов, так и базы данных.

На действующем сайте текст выглядит нормально, но когда вы просматриваете его зеркальную версию, отображается "?" в пределах некоторого текста. Этот текст хранится в таблице базы данных новостей.

Вот снимок экрана, на котором он находится на живом сервере и на зеркальном сервере.

Что могло произойти в процессе резервного копирования на зеркальный сервер? Символы вопросительного знака отображаются в тексте. Почему это?

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
26
0
133 825
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Unicode или другие символы набора символов не выдерживают?

Я видел подобные «странные» символы на сайтах, над которыми я часто работал, когда текст копируется из электронного письма или другого формата документа (например, слова) в текстовый редактор. Редактор может отображать символы, отличные от ASCII, но браузер не может. Для веб-сайта я бы посоветовал найти код объекта HTML для символа и вставить его вместо этого ... или переключиться на более стандартные.

Ваш браузер неправильно интерпретировал кодировку страницы (либо из-за того, что вы установили определенную настройку, либо потому, что страница настроена неправильно), и поэтому не может отображать некоторые символы.

Это как-то связано с кодировками символов.

Вы уверены, что зеркальный сайт имеет те же свойства в отношении кодировки символов, что и ваш основной сервер?

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

Например, если это среда UNIX, возможно, попробуйте сравнить LANG или LC_ALL?

См. Также здесь

Живым сервером является Solaris, зеркальным сервером - Linux rhel5, если это имеет значение.

Brad 27.10.2008 22:01

Linux также использует LANG / LC_ALL. См. Например: linux.com/base/ldp/howto/Indic-Fonts-HOWTO/locale.html

toolkit 28.10.2008 12:55

А также посмотрите, можете ли вы проверить заголовки HTTP, возвращаемые с обоих серверов, чтобы найти очевидные несоответствия, связанные с кодировкой символов.

toolkit 28.10.2008 12:56
Ответ принят как подходящий

Следующие статьи будут полезны

http://dev.mysql.com/doc/refman/5.0/en/charset-syntax.html

http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html

После подключения к базе данных выполните следующую команду:

УСТАНОВИТЬ ИМЕНА 'utf8';

Убедитесь, что ваша веб-страница также использует кодировку UTF-8:

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

PHP также предлагает несколько функций, которые будут полезны для преобразований:

http://us3.php.net/manual/en/function.iconv.php

http://us.php.net/mb_convert_encoding

Проверьте набор символов, излучаемый вашим зеркальным сервером. Похоже, есть разница с основным сервером - живой сайт, похоже, выводит Unicode, а зеркало - нет. Кроме того, обычно рекомендуется очищать символы Unicode во входящем содержимом и заменять их соответствующими объектами HTML.

Ваша конкретная проблема касается «умных кавычек», «длинных тире» и «коротких тире». Я знаю, что вы можете заменить длинное тире на &mdash; и n-тире на &ndash; (что должно быть сделано на стороне ввода вашей базы данных); Я не знаю, какой будет правильная замена умным цитатам. (Обычно я просто заменяю все фигурные одинарные кавычки на ', а все фигурные двойные кавычки на «... фанаты типографики могут смело стрелять в меня, как только увидишь.)

Я должен отметить, что некоторые браузеры более снисходительны к этой проблеме, чем другие - Internet Explorer в Windows имеет тенденцию автоматически обнаруживать и «исправлять» это; Firefox и большинство других браузеров отображают вопросительные знаки.

Обычно я проклинаю слово MS, а затем запускаю следующий сценарий Wscript.

// заменяем на путь к файлу, который нужно очистить
PATH = "test.html"

var go = WScript.CreateObject ("Scripting.FileSystemObject");
var content = go.GetFile (PATH) .OpenAsTextStream (). ReadAll ();
var out = go.CreateTextFile ("clean -" + PATH, true);

// символы
content = content.replace (/ “/ g, '"');
content = content.replace (/ ”/ g, '"');
content = content.replace (/ ’/ g," '");
content = content.replace (/ - / g, "-");
content = content.replace (/ © / g, "& copy;");
content = content.replace (/ ® / g, "& reg;");
content = content.replace (/ ° / g, "& deg;");
content = content.replace (/ ¶ / g, "<p>");
content = content.replace (/ ¿/ g, "& iquest;");
content = content.replace (/ ¡/ g, '& iexcl;');
content = content.replace (/ ¢ / g, '& cent;');
content = content.replace (/ £ / g, '& pound;');
content = content.replace (/ ¥ / g, '& yen;');

out.Write (содержание);

Вы можете добавить: content = content.replace (/ á / g, '& nbsp;');

Dave Burton 24.12.2019 11:27

Отредактируйте файл конфигурации Apache на «зеркальном» сервере (сервере с проблемой) и закомментируйте следующую строку:

AddDefaultCharset UTF-8

Затем перезапустите Apache:

service httpd restart

Проблема в том, что строка «AddDefaultCharset UTF-8» переопределяет Content-Type, указанный в файлах .html; например.:

<meta http-equiv=Content-Type content = "text/html; charset=windows-1252">

Наиболее распространенным признаком является то, что коды символов выше 127 отображаются в виде черных ромбов с вопросительными знаками на них (в Chrome, Safari или Firefox) или в виде маленьких квадратов (в IE и Opera). Файлы HTML, созданные Microsoft Word, обычно содержат много таких символов, наиболее распространенным из которых является код символа 160 = 0xA0, что эквивалентно "& nbsp;" в кодировке Windows-1252 и часто встречается между тегами span, например:

<span style = "mso-spacerun: yes">ááá </span>

Комментирование строки кодировки по умолчанию сработало для меня, нужен ISO-8859-1. Ваше здоровье.

Ollie 22.12.2012 23:56

Это была моя проблема. Я полностью забыл об определении кодировки в моем файле конфигурации.

Michael Yaworski 21.01.2016 06:49

Да, это была моя проблема - кодировка была установлена ​​для UTF-8, но символы были windows-1252. Вот что я получаю за копирование и вставку из документа Word

B T 24.03.2016 06:50

Не могли бы вы сообщить мне название файла, который нужно изменить

Jon Andrews 20.11.2019 13:41

На моем (пожилом) веб-сервере файл конфигурации Apache: /etc/httpd.conf Он также может находиться в одном из следующих мест: /etc/apache2/httpd.conf /etc/apache2/apache2.conf / etc / httpd / httpd.conf /etc/httpd/conf/httpd.conf

Dave Burton 24.12.2019 11:21

Я пришел сюда в поисках решения для JavaScript, отображаемого в браузере и не связанного напрямую с базой данных ...

В моем случае я скопировал и вставил текст, который нашел в Интернете, в файл JavaScript и сохранил его с помощью Блокнота Windows.

Когда страница, которая использует этот файл JavaScript, выводит строки, вместо специальных символов, таких как буквы с диакритическими знаками, и т.

Я открыл файл с помощью Notepad++. Сразу после открытия файла я увидел, что кодировка символов была установлена ​​как ANSI, как вы можете видеть (курсор мыши в нижнем колонтитуле) на следующем снимке экрана:

Чтобы решить эту проблему, щелкните меню Encoding в Notepad++ и выберите Encode in UTF-8. Тебе должно быть хорошо. :)

У меня была эта проблема, поэтому я просто взял весь свой контент, скопировал / вставил его в блокнот, создал новый файл php, вставил обратно, повторно сохранил и перезаписал, и .. это сработало! Это действительно был пережиток редактирования Microsoft Word ...

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