Почему кодировка в БД cp1251(кирилица) а на страницу выводит в utf8

Статус
В этой теме нельзя размещать новые ответы.

Georgy90

Новичок
Почему кодировка в БД cp1251(кирилица) а на страницу выводит в utf8

Добрый вечер!
Помогите пожалуйста, у меня в БД MySQL кодировка таблиц в cp1251 а на страницу при выполнении запросов выводится в utf8 (определил путем перебора кодировок в браузере).
Уже заканчивается третий день, как я бьюсь над этим вопросом, скоро завою. Вот приведу переменные в MySQL:

character set clientcp cp1251
character set connection cp1251
character set database cp1251
character set filesystem binary
character set results cp1251
character set server cp1251
character set system utf8

collation connection cp1251_general_ci
collation database cp1251_general_ci
collation server cp1251_general_ci

Конфигурация: PHP 5.2.6, apache_2.2.10, phpMyAdmin-3.0.1.1, MySQL, mysql-5.0.67.

P.S. Пожалуйста не посылайте, помогите студенту разобраться, я и FAQ прочел, но это все не помогло. :(
 
ну для начала напиши простенький скрипт, который просто делают выборку (одну строку) и выведи на экран. Посмотри что будет. Потом перед выборокой добавь строку кода:
PHP:
mysql_query('SET NAMES cp1251');
Посмотрите, что будет в этот раз и подумайте....
А вообще ваш код черезвычайно правилен - он то знает, что надо использовать utf, а вы - нет ))
 

Georgy90

Новичок
Я уже пробовал писать этот запрос: mysql_query('SET NAMES cp1251');

На экран выводит:

Поиск предметов
Количество найденых предметов:1
1. Код: periphery
Автор: Перефирийные устройства

Без запроса тоже самое...

Если ставлю кодировку в браузере utf8 то выведит следующее:

����� ���������
���������� �������� ���������:1
1. ���: periphery
�����: Перефирийные устройства

Пожалуйста обьясните как разрулить эту ситуацию, а то без кирилицы смысла от MySQL невижу :(
 
Ыыыыыы... видишь же, что тебе только сопоставить две кодировки надо... может в коде где то стоит перекодировка, может ещё где есть такой же вызов, просто незаметил.
 

Georgy90

Новичок
Только не ругайтесь, вот код страницы с запросом:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>ВПТ - Поиск предметов</title>
</head>
<body>
<h1>Поиск предметов</h1>
<?php
@ $db = mysql_pconnect("localhost", "pma", "pma"); //Устанавливаем соединение с БД

if (!$db)
{
echo "Ошибка при соединении с базой данных. Пожалуйста попробуйте позднее.";
exit;
}

mysql_query("SET NAMES cp1251");

mysql_select_db("jurnal"); //Выбираем БД MySQL
$query = "select * from subject"; //Составляется запрос
$result = mysql_query($query); //Отправяем запрос
$num_results = mysql_num_rows($result);

echo "<p>Количество найденых предметов:".$num_results."</p>";

for ($i=0; $i < $num_results; $i++)
{
$row = mysql_fetch_array($result);
echo "<p><strong>".($i+1).". Код: ";
echo htmlspecialchars( stripslashes($row["code"]));
echo "</strong><br>Автор: ";
echo htmlspecialchars( stripslashes($row["name"]));
echo "</p>";
}
?>
</body>
</html>


Я наверника не знаю, но у меня есть такое мнение, что надо как то из БД выдернув информацию конвертнуть ее из utf8 в cp1251.
 
Убери meta-тег, и добавь такую строку:
PHP:
header('Content-Type: text/html; charset=windows-1251');
@ $db = mysql_pconnect("localhost", "pma", "pma"); //Устанавливаем соединение с БД
перед
PHP:
@ $db = mysql_pconnect("localhost", "pma", "pma"); //Устанавливаем соединение с БД
-~{}~ 22.11.08 19:32:

я не повторяюсь, я не повторяюсь ))
 

Georgy90

Новичок
у меня изначально без meta было, эт я потом уже лепить начал.
Ну в общем не заработало :(

-~{}~ 22.11.08 19:45:

Я устанавливал, все по отдельности, не сборки. И еще такой момент заметил в phpMyAdmin пишет который в сборках TopServer и Denver пишет MySQL-кодировка: Windows Cyrilic (cp1251) - что то на подобии этого, а у меня когда я поставил все поотдельности MySQL-кодировка: UTF-8 Unicode (utf8)
 
фак мой моск... без понятия. Надо подождать кого нибудь поумнее )))
А вообще, это хороший повод сделать всё в utf ))
 

Georgy90

Новичок
Ёмае вот так беда, дело в том что мне кроме как в Интернете больше не у кого узнать, знакомых никого админов, программистов и т.д. нет...
В инете тоже кучу форумов поперечитал ничего не нашел, точней ничего не помогла.
 

Georgy90

Новичок
мне это не помогло, я менял все значения, похоже, что и вы мне помочь не можете, или не хотите, обидно конечно же.

-~{}~ 23.11.08 11:58:

Еще хочу дополнить, что у меня русский текст не вопросами выводится - ???????????????, т.е. как я понимаю проблемы как таковой именно с кодировкой нет. Проблема в том что в БД таблица в cp1251, а на страницу выводит в utf8.

Ну где же вы гении? или чуть всторону от типичной проблемы отошел и все? Есть же разница тот кто года 3-4 работает с MySQL или 2-3 месяца (т.е. Я). :(

-~{}~ 23.11.08 14:57:

АААААААА, я разобрался, студент который работает с программированием в области web-технологий всего 2 месяца, оказался умнее Вас, в Интернете такого решения которое я использовал нет! и небудет.

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

Пусть Вам будет стыдно. Досвиданья...
 
Ну ладно, ты крут, без сомнений ))
Расскажи хоть как решил - вдруг у других будет такая же проблема. К тому же интересно.
 

Georgy90

Новичок
Армян
То что ты ссылку дал, это совсем другое, вот Вы арете читай форум внимательно - то проблема именно с кодеровкой, а у меня проблема с выводом текста не в той кодировке была.
 

Армян

Новичок
Раскажи как решил интересно :)

пс. предполагаю что это какое-то сверх индусское решение ))))
 

Georgy90

Новичок
все просто в БД я немогу сказать где именно, так как я не спец в отлицие от многих, но было лишнее преобразование, подчеркну, что не в коде а файлах БД. Теперь у меня в независимости в какой кодировке таблицы в БД, я их могу выводить как в cp1251, так и в utf8, кроме того в БД могут даже быть каракули, а выведутся обычные понятные нам русские буквы.
 

Georgy90

Новичок
да нет, какой я могу мега код написать то??? кароче я немогу это обьяснить, это у меня всплыло само, после 3-х или 4-х дней сидения перед компом и тупом пяленьи на эти кракозябры (см. выше).
Меня радует одно, что теперь мне дипломная работа обеспечена по установке и наладке web-сервера и создании сайта для нашего техникума. К тому времени (а будет это через 4 месяца) я надеюсь разберусь что я сделал...
Поверте хочется поделиться как разрулил в ситуацию, но немогу из-за нечеткого понимания.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху