Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   WWW (http://mangos.ytdb.ru/forumdisplay.php?f=23)
-   -   Решение ЛЮБЫХ проблем с кодировками. (http://mangos.ytdb.ru/showthread.php?t=274)

tempura 13.03.2010 10:44

Решение ЛЮБЫХ проблем с кодировками.
 
Отсутствие корректного вывода текста на странице, любые проблемы с кодировками, могут быть вызваны двумя причинами, которые несложно различить:
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".

doktoriwko 28.07.2011 10:34

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

KiriX 28.07.2011 11:51

Докторишко, .htaccess тебе в помощь!

NeatElves 28.07.2011 11:59

Вложений: 2
Скорее мануал по браузеру.))

doktoriwko 28.07.2011 12:14

Ну я в курсе как менять кодировку страницы ) И я знаю что на утф8 )
Но после изменения не сохраняються, и снова браузер открывает под cp1251.
По идее браузер же сам определяет кодировку страницы
Код:

# Disable access to this files
#<FilesMatch "\.(conf|php|in)$">
#        Deny from all
#</FilesMatch>
# Enable acces only for index.php and ajax.php
#<FilesMatch "(index|ajax|arena_ico|arena_small_ico|guild_ico|gps2|find|map|instance).php">
#        Allow from all
#</FilesMatch>
# Default startup page
DirectoryIndex index.php
# Disable output dirs
Options -Indexes
# cp1251 support
AddDefaultCharset cp1251
<IfModule mod_charset.c>
        CharsetDisable on
        CharsetRecodeMultipartForms Off
</IfModule>
php_value default_charset cp1251
php_flag zlib.output_compression On
FileETag none

Вот вроде изменил на cp1251, но что то не работает (

tempura 29.07.2011 13:23

Цитата:

Сообщение от doktoriwko (Сообщение 24325)
Вот почему то открываю мазилой выводяться всякие ироглифы вместо текста, с остальных браузеров все нормально.
Можно ли изменить кодировку самого сайта с утф8 на ср1251?

http://ru-mangos.ru/showthread.php?t=274

doktoriwko 30.07.2011 21:41

И эту статью я уже находил, спасибо. Но не помогло...

tempura 30.07.2011 22:35

Цитата:

Сообщение от doktoriwko (Сообщение 24395)
И эту статью я уже находил, спасибо. Но не помогло...

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

doktoriwko 30.07.2011 23:03

Изменяю на cp1251 .htaccess, indexe и confige. В принципе я не телепат, не все так доступно написано, для без ошибочного понимания.

lovepsone 30.07.2011 23:50

наверное вы где-то ошиблись! Пересмотрите все заново так как я у себя менял кодировки и все было нормально.

31.07.2011 00:40

Цитата:

Сообщение от doktoriwko (Сообщение 24402)
Изменяю на cp1251 .htaccess, indexe и confige. В принципе я не телепат, не все так доступно написано, для без ошибочного понимания.

в конфиге кодировка для БД...а вы таблицу с дампом в какой кодировке заливали? да и вообще что значит иероглифы? Где иероглифы? В данных из БД или в текстовом наполнении сайта? в метатеге тоже cp1251 писали, а не windows-1251?

tempura 31.07.2011 10:04

Цитата:

Сообщение от doktoriwko (Сообщение 24402)
Изменяю на cp1251 .htaccess, indexe и confige.

Уже ошибки пошли (выше написали какие).

Цитата:

Сообщение от doktoriwko (Сообщение 24402)
В принципе я не телепат, не все так доступно написано, для без ошибочного понимания.

Тут вы слово перепутали, вместо "телепат" вероятно хотели написать "интеллектуал"?
Укажите, какие именно места вам непонятны, и вам с удовольствием помогут. За несколько лет данный мануал (по исправлению кодировок) вызывал немало вопросов, однако ни разу в нем не были найдены ошибки и недочеты. Так что лучше бы вам поискать их у себя.

doktoriwko 31.07.2011 10:33

Что имел в виду, то и написал. Не нужно судить знания людей. Бд заливал в кодировке Cp1251.
Код:

Поиск квеста
РџРѕРёСЃРє

Ироглифы такие и в базе и в тексте сайта

Кот ДаWINчи 31.07.2011 10:52

Для Базы мангоса кодировка таблиц должна быть утф-8

Для сайта - какая тебе надобна. Только не забывай после коннекта к базе, давать команду на выбор кодировки.

Пример:
Код:

function db_connection($base)
  {
  $connect = @mysql_connect($base['ip'].':'.$base['port'], $base['user'], $base['pass']);
  @mysql_select_db($base['db'], $connect);
  @mysql_query("SET NAMES 'utf8'"); 
  return $connect;
  }


31.07.2011 10:56

Цитата:

Сообщение от doktoriwko (Сообщение 24412)
Что имел в виду, то и написал. Не нужно судить знания людей. Бд заливал в кодировке Cp1251.
Код:

Поиск квеста
РџРѕРёСЃРє

Ироглифы такие и в базе и в тексте сайта

это не иероглифы - это данные в кодировке utf-8...хуле, все sql файлы в utf-8, а льем cp1251....ладно вы сами не поняли но они у вас все же залились в utf-8, т.к. иероглифы были бы другие
а как вы узнали, что в базе все в такой кодировке? Чем смотрели? Если по сайту, то вам надо поменять кодировку подключения к базе.
Да и вообще напишите почему вы хотите поменять вменяемую кодировку utf-8 на убогую cp1251? Вам что лучше будет? Или у вас это субдомен с основной кодировкой cp1251?




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

tempura 31.07.2011 18:46

Ох, ну как вы все набросились на бедную doktoriwko. :( Он может пока еще и сам не понимает что у него там сломано, потому и не может починить. Надо просто помочь человеку разобраться.
Вон как Minimajack все подробно расписал. Практически - по нотам.

doktoriwko 04.08.2011 14:15

*бедного. Можно посчитать за оскорбление.
Меняю изза того что файрфокс не открывает в утф8, а в ср1251. Хотя и меняешь через вид, меняется обратно автоматически. Такая проблема не только у меня, у всех с фаером на моей страницы

04.08.2011 14:35

Цитата:

Сообщение от doktoriwko (Сообщение 24513)
*бедного. Можно посчитать за оскорбление.
Меняю изза того что файрфокс не открывает в утф8, а в ср1251. Хотя и меняешь через вид, меняется обратно автоматически. Такая проблема не только у меня, у всех с фаером на моей страницы

<meta charset="utf-8"> точно есть в исходном коде?

doktoriwko 05.08.2011 10:45

Есть точно. Я вот думаю мб дело в самой мазиле, отдает предпочтение к почему то ср1251.
Мб где то в апаче настройки изменить?

tempura 05.08.2011 21:03

Цитата:

Сообщение от doktoriwko (Сообщение 24513)
*бедного. Можно посчитать за оскорбление.
Меняю изза того что файрфокс не открывает в утф8, а в ср1251. Хотя и меняешь через вид, меняется обратно автоматически. Такая проблема не только у меня, у всех с фаером на моей страницы

"бедного", в смысле "скорбного на голову". Судя по приведенному - не выполнен третий пункт по приведенной выше ссылке на пост:
Цитата:

Текст на странице выдается иероглифами.
Для исправления должны ОБЯЗАТЕЛЬНО быть выполнены следующие три условия:
1. Браузеру должен выдаваться верный заголовок:
2. Сервер должен отдавать верный заголовок:
3. Код самой страницы должен быть в соответствующей кодировке.
Провал в интеллектуальную ямку. :)

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

Велкам на недельку в процесс размышлений.



PS
И я снова и снова повторю: если у вас что-то не получается - это ВАШИ проблемы. Решение вам ДАНО. Оно единственное. Его надо просто применить у себя, и все. Если у вас не хватает на это рук или головы - это ваши личные проблемы, разводить из-за этого флуд на форуме - не надо. Собственные руки и голову развивайте, а не парьте чужие.


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

ru-mangos.ru - Русское сообщество MaNGOS