Кодировка БД и скрипта

mylsdql

Новичок
Добрый день!

Есть проблема:

Есть БД mysql, utf8_general_ci, кодировка utf
Есть php скрипт, кодировка utf, в htaccess стоит php_value default_charset UTF-8

Вроде все хорошо, сайт открывается, весь русский текст в шаблонах - на русском, а вот все, что грузится на русском языке из БД имеет вид: "� ������ �����"

Если меняю кодировку на Cyrrilic Windows то сайт нечитаем, а все из БД нормального вида.

В чем может быть проблема? Уже замучился искать..
Спасибо.
 

mylsdql

Новичок
Спасибо за ответ.
В том то и дело, что у меня SET NAMES utf8, а кодировка внутри таблиц utf8 и в phpmyadmin все отображается нормально.
 

mylsdql

Новичок
Все проверил по пунктам.
На севрере все файлы в utf8, стоит параметр в htaccess вывода utf8, в бд все таблицы в utf8 и читаемы через myadmin, а вот выводится не верно.
Причем пробовал с разными БД на разных серверах.

P.S. что касается пункта, где советуют прописать в header кодировку, то это без проблем, БД отображается нормально, только вот теперь сами файлы php отображаются криво.
 

Фанат

oncle terrible
Команда форума
я подозреваю, что SET NAMES пишется не то или не туда.
 

mylsdql

Новичок
Приведу кусочек кода другого скрипта, который работает на этой бд и у которого такие же проблемы.

PHP:
<?php
header('Content-Type: text/xml');
// **************  MYSQL ***********************//
/*$m_server = "localhost";
$m_db = "db";
$m_user = "user";
$m_pass = "pass";
$m_pre = "";

*/
$m_server = "localhost";
$m_db = "db";
$m_user = "user";
$m_pass = "pass";
$m_pre = "";

$mysql = mysql_connect($m_server, $m_user, $m_pass);
if (!$mysql) {
    die('Ошибка подключения к серверу ' . mysql_error());
}
$db_selected = mysql_select_db($m_db, $mysql);
if (!$db_selected) {
    die ('Ошибка подключения к БД' . mysql_error());
}

mysql_query("SET NAMES 'utf-8'");
mysql_query("SET CHARACTER SET 'utf-8'");

// ********  END OF MYSQL ***********************//
function second($arr){
	// получаем минуты
	$second = $arr[0] * 60;
	$second = $second + $arr[1];
	// получаем секунды
	$second = $second * 60 + $arr[2];
	return $second;
}
function clear($var){
	$var = str_replace("&","",$var);
	//$var = iconv("UTF-8","utf-8",$var);
	return $var;
}
echo "</videoset>";
echo "</hosting>";
?>
 

Фанат

oncle terrible
Команда форума
так я и думал. кодировка указана неправильно.
"я всё проверил" :)
 

mylsdql

Новичок
Спасибо, выходит, что разница была в "utf-8" и "utf8", я бы сам даже не заметил...

Так, в одном я поменял месте, выходит что теперь нужно менять во всем скрипте эту строчку?
 

Фанат

oncle terrible
Команда форума
если имелось в виду во всех скриптах, то я бы порекомендовал такую штуку, как include
 

mylsdql

Новичок
Дело в том, что до этого, у меня все работало. Грохнулся сервер, я все переставил, все заработало, а вот конкретно у одного сайта такая фигня с кодировкой.

То, что я показывал как пример, это самописный скрипт для выдачи xml. После Ваших правок, он выдает кодировку нормально, а вот основной скрипт - по прежнему с кривой кодировкой так как я не понимаю где именно в нём можно что-то поменять. В php файлах я не нашел параметра "mysql_query("SET NAMES..."
Да, у меня там есть include, но там тоже ничего нет.
PHP:
include_once ("classes/config.php");
include_once ('classes/menu.php');
include_once ('classes/sessions.php');
include_once ('tag_cloud.php');
Просто удивительно как раньше то все работало?
 

mylsdql

Новичок
А говорил, что есть :)

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

Вроде был так же настроен, уже не буду гворить что точно так же, так как уже два раза промахнулся :)

Как можно решить проблему не трогая my.ini файлы, вроде через него это можно сделать.
 
Сверху