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

StackOverflow https://stackoverflow.com/questions/241015

Вопрос

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

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

Вот снимок экрана, показывающий, как он находится на основном сервере и на зеркальном сервере.

Что может произойти в процессе резервного копирования на зеркальный сервер?alt text

Это было полезно?

Решение

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

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.icv.php

http://us.php.net/mb_convert_encoding

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

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

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, что эквивалентно & Quot; & Amp; nbsp; & Quot; в кодировке Windows-1252 и часто встречается между тегами span, например так:

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

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

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

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

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

enter image description here

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

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

Это будет связано с кодировкой символов.

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

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

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

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

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

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

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

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

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

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

// символы
содержание = content.replace (& / # 8220; / г, 'Quot &;');
содержание = content.replace (& / # 8221; / г, 'Quot &;');
содержание = content.replace (/ # 8217 &; & / г, Quot; 'Quot &;);
содержание = content.replace (& / # 8211; / г, Quot &; - Quot &;);
содержание = content.replace (/ # 169 & / г, Quot & & амп; копировать; Quot &;);
содержание = content.replace (& / # 174; / г, Quot &; & амп; р; Quot &;);
содержание = content.replace (/ # 176 &; / г, Quot &; & амп; град; Quot &;);
содержание = content.replace (/ # 182 &; / г, Quot &; л &; р GT &; Quot &;);
содержание = content.replace (& / # 191; / г, Quot &; & амп; iquest; Quot &;);
содержание = content.replace (& / # 161; / г, 'амп &; iexcl;');
содержание = content.replace (& / # 162; / г, 'амп &; цент;');
содержание = content.replace (& / # 163; / г, 'амп &; фунт;');
содержание = content.replace (& / # 165; / г, 'амп &; йен;');

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

Юникод или другие символы набора символов проваливаются?

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top