Подтвердить что ты не робот

Почему символы вопроса отображаются в тексте, почему?

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

SET NAMES '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

Ответ 2

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

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

Ответ 3

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

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

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

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

enter image description here

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

Ответ 4

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

Ответ 5

Это будет иметь отношение к кодировке символов.

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

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

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

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

Ответ 6

Юникод или другие символы набора символов, проходящие через?

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

Ответ 7

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

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

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

Ответ 8

Я обычно проклинаю слово 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, '& фунт;');
content = content.replace(/¥/g, '& yen;');


out.Write(content);