PDA

Просмотр полной версии : Кодировка в вбулетин


Zitt
07.03.2007, 00:21
Вобщем, послее перезда на новый хост, вместо русскиъ букв отображаюцца знаки вопросов.
В базе всё нормально, в форуме "????".
Вот выдержка из дока
1. PHP ИСПОЛЬЗУЕТ НЕВЕРНУЮ КОДИРОВКУ В КАЧЕСТВЕ КЛИЕНТСКОЙ Симптомы: √ Через phpMyAdmin (здесь и далее подразумевается версия умеющая работать с кодировками, т.е. >= 2.6.0) все по-русски, а в скрипт приходят вопросительные знаки.
Тестирование:
Попробуйте в начале вашего скрипта, но после соединения выполнить SQL-запрос ╚SET NAMES кодировка╩, где кодировка, та кодировка, в которой у вас (по вашему мнению) данные. Например, для русской виндовой кодировки (windows-1251) это будет cp1251, для KOI8-R √ koi8r, для UTF-8 √ utf8 и так далее.
ПРИМЕР:
*********************************
$query = "SET NAMES cp1251";
mysql_query($query);
*****Нашзапрос*************
$query = "select * from dinamic where id_dinam= ".$id_dinam.' LIMIT 1';//Формирование запроса $result = mysql_query($query);//Отправка запроса и запись результата в переменную *********************************

Собственно как это в вбулетин реализовать???
С кодировкой базы всё нормально, сдампил и залил с правильной (cp1251)

PS/ Спросил тут ибо http://vbulletin.net.ru/ шас в дауне, а проблему надо решать как то.

vorishka
07.03.2007, 01:20
Дамп был произвдён с одной кодировкой БД а залил с другой =) Нада заливать с utf8 (по моему) я не уверен... Или попроси хостеров шо б востановили...
А на будущее пользуйся вот этой штучкой - http://sypex.net/

Zitt
07.03.2007, 01:36
Или попроси хостеров шо б востановили...
Новый хост, чего восстоновили?)))))
А на будущее пользуйся вот этой штучкой - http://sypex.net/
Я им и пользовался)

Zitt
07.03.2007, 01:41
Но ваши скрипты скорее всего будут показывать вопросительные знаки, так как в них не указывается кодировка соединения cp1251, а используется latin1. Для того чтобы это исправить, нужно во всех ваших php-файлах, где вызывается функция mysql_connect, обычно перед вызовом mysql_select_db добавить следующую строку:

mysql_query("/*!40101 SET NAMES 'cp1251' */") or die("Error: " . mysql_error());

нужно во всех ваших php-файлах
Это ужос =\\\
Вроде конект проводицца тока в одном файое а дальше он инкоудицца, вопрос в каком?

rijy
07.03.2007, 01:41
была аналогичная трабля с форумом. сделал тупо, но действенно. просто открыл в текстовом редакторе файл дампа БД - *.sql и заменил везде где встречалось:
CHARSET=latin
на:
CHARSET=cp1251

з.ы. у тебя не обязательно будет latin, может быть чтонить другое, главное что это кодировка по дефолту. ее надо заменить на cp1251.

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

Talisman
07.03.2007, 01:47
Это ужос =\\\
Вроде конект проводицца тока в одном файое а дальше он инкоудицца, вопрос в каком?
в глобалс.пшп допиши запрос вида $db-> не помню синтаксис точно) завтра утром гляну...)

$getevents = $db->query_read("
SELECT threadid,title FROM " . TABLE_PREFIX . "thread WHERE forumid = 2");
типо того, только не риад)

Zitt
07.03.2007, 02:05
ну а потом заливаешь отредактированный дамп и все должно быть ок..
спс попробую..
завтра утром гляну...)
Глянь пжл...

Helios
07.03.2007, 02:17
Проверь collations мускула, может там намудрил.
Еще посмотри в настройках языка, выставь там нужную кодировку.

На крайняк смотри в
/includes/class_database_explain.php
/includes/class_database_slave.php
/includes/class_dbalter.php

FQziT
07.03.2007, 02:43
Хм.. посмотри в шаблонах форума (в основном), там где мета теги <meta http-equiv="Content-Type" content="text/html; charset={$charset}"> - что-нибудь типа этого будет.. замени {$charset} на windows-1251. Если в БД всё нормально, то должно нормально отображаться после этого.

Zitt
07.03.2007, 13:13
Хм.. посмотри в шаблонах форума (в основном), там где мета теги <meta http-equiv="Content-Type" content="text/html; charset={$charset}"> - что-нибудь типа этого будет.. замени {$charset} на windows-1251. Если в БД всё нормально, то должно нормально отображаться после этого.
Смарел, в форуме кодировка cp1251, в насторйках тоже она.

Abra
07.03.2007, 13:22
http://vbulletin.net.ru/ не в дауне - он просто тормозит вечерами.
ищи там темы про кодировку - их дох и больше.
Я бы так ответил, но не помню как там именно проблема с кодировкой решается. поищи.

Zitt
07.03.2007, 14:42
http://vbulletin.net.ru/ не в дауне
О!! бувально сёня заработал, они на новый хостинг пережали))

rijy
08.03.2007, 12:58
Zitt, позырь кодировку в самом дампе бд!! там и меняй.. это самый быстрый и надежный способ имхо.

Zitt
08.03.2007, 18:05
Ура таварищи!!! Наконецто сделал!!
В class_core.php после
else
{
$check_read =& $check_write;
$this->connection_recent =& $this->connection_write;
втавил
$this->functions['query']("SET CHARACTER SET cp1251");
И всё нормально стало)