Вопросительный знак символов, отображаемых в тексте, почему это?

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

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

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

Что может произойти в процессе резервного копирования на зеркальные сервер? alt текст http://i34.tinypic.com/2mpbfo6.jpg

8 ответов


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

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


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

AddDefaultCharset UTF-8

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

service httpd restart

проблема в том, что строка" AddDefaultCharset UTF-8 " переопределяет тип содержимого, указанный в .html-файлы; например:

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

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

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

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

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

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

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

enter image description here

чтобы решить проблему, нажмите кнопку на Notepad++ и выберите Encode in UTF-8. Ты должен быть готов. :)


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


Это будет что-то делать с кодировками.

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

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

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

Смотрите также здесь


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

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

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


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

// заменить на путь к файлу, который нуждается в уборке
PATH = " test.HTML-код"

ВАР иди=объект WScript.CreateObject ("Сценарии.Filesystemobject, с");
содержание ВАР=идти.GetFile (путь).OpenAsTextStream().ReadAll();
var out=go.CreateTextFile ("clean-" +PATH, true);

// символы
content=содержание.заменить(/"/г'"');
content=содержание.заменить(/"/г'"');
content=содержание.заменить(/’/г,"'");
content=содержание.заменить(/–/г,"-");
content=содержание.заменить(/©/г,"©");
content=содержание.заменить(/®/г,"®");
content=содержание.заменить(/°/г,"°");
content=содержание.заменить (/¶/g, "

");
content=содержание.заменить(/¿/г"¿");
content=содержание.заменить(/¡/г,'¡');
content=содержание.заменить (/ў/г,'¢');
content=содержание.заменить(/£/г,'£');
content=содержание.заменить(/¥/г,'¥');

из.Написать (содержание);


Unicode или другой набор символов проваливания?

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