Ru-MaNGOS

Вернуться   Ru-MaNGOS > Дополнения > WWW

Важная информация

WWW Web интерфейс для MaNGOS

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.03.2010, 10:44   #1
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию Решение ЛЮБЫХ проблем с кодировками.

Отсутствие корректного вывода текста на странице, любые проблемы с кодировками, могут быть вызваны двумя причинами, которые несложно различить:
1. текст на странице знаками вопроса: некорректная кодировка выборки данных из базы.
2. текст на странице иероглифами: некорректная выдача кодировки страницы.
Есть пара пограничных случаев, но они редко встречаются, и с ними проще - если один вариант исправления не подошел - используйте второй.


Исправление (примеры взяты из MMfPM):

Текст из базы на странице выдается знаками вопроса.
1. Ищем в коде где у нас подключение к базе и выбор базы. Строки подобные:
Цитата:
@mysql_connect($db_host, $db_username, $db_password, $newlink);
или
Цитата:
@mysql_select_db($db_name, $this->link_id);
Естественно, в разных системах эти строки могут различаться. Основное их различие - в способе вызова коннекта, сам коннект всегда присутствует.
2. Между ними, или после них вставляете подобную же конструкцию:
Цитата:
@mysql_query("SET NAMES 'utf8'");
(обратите внимание на кавычки).
Помните, что "конец строки" в рнр обозначается точкой с запятой (";")
Если там это уже стоит - значит меняем utf8 на cp1251.

Объясняю:
Кодировка вашей базы данных может отличаться от кодировки написаной в скрипте, либо используемой по умолчанию. Запрос
Цитата:
SET NAMES 'utf8'
(обратите внимание на кавычки) ставит нужную вам кодировку принудительно.




Текст на странице выдается иероглифами.
Для исправления должны ОБЯЗАТЕЛЬНО быть выполнены следующие три условия:
1. Браузеру должен выдаваться верный заголовок:
вверху страницы, в теге <head> должен стоять мета-тег
Код:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
(или Windows-1251).
Для примера - откройте код этой страницы форума.
2. Сервер должен отдавать верный заголовок:
в конфиге Апача, либо в файле .htaccess в корневой директории сайта, должна быть строка
Код:
AddDefaultCharset UTF-8
(или Windows-1251).
3. Код самой страницы должен быть в соответствующей кодировке.
Если страница в ANSI кодировке, а сервер хочет отобразить ее в UTF-8 - получатся иероглифы.

Третий пункт в php легко и просто правится одной строкой:
Код:
header("Content-Type: text/html; charset=UTF-8");
Таким образом страница в ANSI кодировке отдается браузеру с указанием "выводить ее в UTF-8".
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.

Последний раз редактировалось tempura; 13.03.2010 в 11:01.
tempura вне форума   Ответить с цитированием
15 пользователя(ей) сказали cпасибо:
DeusModus (13.03.2010), dj--alex (26.03.2010), Feel the Power (16.03.2010), FreeBSD (24.05.2010), Konctantin (06.04.2010), _PARADOX_ (02.06.2010)
 

Метки
cp1251, utf8, windows-1251, знаки вопроса, кодировка, кодировки


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
исправление любых ошибок, связанных с db_version tempura Прочая документация 2 07.03.2010 03:32


Текущее время: 11:31. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot