23.10.2010, 23:55
|
|
Профессор
|
|
Регистрация: 12.08.2010
Сообщений: 221
|
|
MySQl - кодировка
В какой кодировке указывать надо, чтоб достало данные из майкл в русском виде а не знаками вопроса?
Что здесь поменять нужно?
|
|
24.10.2010, 00:23
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Вобще обычно ставится utf8_general_ci
Но вопросики могут быть из-за несоответсвия заявленной на странице кодировки и действительной кодировки текста. Так же проблема может быть в неправильной кодировки соединения с бд и тд...
|
|
24.10.2010, 00:32
|
|
Профессор
|
|
Регистрация: 12.08.2010
Сообщений: 221
|
|
Указал как вы написали и всё равно всё знаками вопроса.
Во как я соединяюсь:
<?php
$server = 'localhost'; //Имя сервера
$user = 'xai'; //Логин
$password = '12345'; //Пароль
$db = 'video';
$table = 'lessons'; //Название таблицы
$error_database = '<h2>Произошла ошибка в базе данных,<br/>
в ближайшее время она будет устранена!</h2>';
$connect = mysql_connect($server,$user,$password);
if(!$connect){
echo $error_database;
exit;
};
//$connect по какому соединению мы работаем
$select = mysql_select_db($db,$connect);
if(!$select){
echo $error_database;
exit;
};
?>
Какую кодировку указывать для поля, которое вывожу?
|
|
24.10.2010, 00:48
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
После подключения выполните запрос
|
|
24.10.2010, 00:56
|
|
Профессор
|
|
Регистрация: 12.08.2010
Сообщений: 221
|
|
Написал так
<?php
mysql_query("SET NAMES utf8");
$server = 'localhost'; //Имя сервера
$user = 'xai'; //Логин
$password = 't37du78ah4'; //Пароль
$db = 'video';
$table = 'lessons'; //Название таблицы
$error_database = '<h2>Произошла ошибка в базе данных,<br/>
в ближайшее время она будет устранена!</h2>';
$connect = mysql_connect($server,$user,$password);
if(!$connect){
echo $error_database;
exit;
};
//$connect по какому соединению мы работаем
$select = mysql_select_db($db,$connect);
if(!$select){
echo $error_database;
exit;
};
?>
Стало не знаками вопроса выдавать, а вот такими уже буквами.
Случилось то, чего так долго ждали РІ Рунете, РЅРѕ чего РЅРёРєРѕРіРґР° ранее еще РЅРµ было!..РџСЂРѕРёР·РѕС€ »Рѕ РїРѕ истине эпохальное событие!.. Невероятный, потрясающий подарок всем, кто интересуется заработками РІ Сети!..
Последний раз редактировалось Golovastik, 24.10.2010 в 01:28.
|
|
24.10.2010, 10:01
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Во-первых нужно посмотреть сами таблицы ели в них тоже крякозябры, то нужно самому документу задать кодировку и посмотреть чтобы каждая таблица соответствовала при мерно такой строчке:
ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
к примеру:
CREATE TABLE `elements` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(255) NOT NULL,
`name` longtext NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Последний раз редактировалось monolithed, 24.10.2010 в 11:23.
|
|
24.10.2010, 10:36
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от Golovastik
|
Стало не знаками вопроса выдавать, а вот такими уже буквами.
Случилось то, чего так долго ждали РІ Рунете, РЅРѕ чего РЅРёРєРѕРіРґР° ранее еще РЅРµ было!..РџСЂРѕРёР·РѕС€ �»Рѕ РїРѕ истине эпохальное событие!.. Невероятный, потрясающий подарок всем, кто интересуется заработками РІ Сети!..
|
Цитата:
|
Случилось то, чего так долго ждали в Рунете, но чего никогда ранее еще не было!..Произош? ?ܐޠпо истине эпохальное событие!.. Невероятный, потрясающий подарок всем, кто интересуется заработками в Сети!
|
Текст то в utf-8 теперь, но http-заголовок, отсылаемый твоим сервером, говорит о другом...
ЗЫ: И чтоже это за эпохальное событие такое? Головастик полез прогать в похапе?
Последний раз редактировалось danik.js, 24.10.2010 в 10:38.
|
|
24.10.2010, 11:21
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от danik.js
|
Текст то в utf-8 теперь
|
а вот это ещё вопрос, в utf-8 ли?!
при смене кодировки таблицы или её строк нужно и саму таблицу перезалить(экспорт импорт), иначе она останется в той кодировке в которой была, несмотря на то что будет стоять utf-8.
Если вы работает с ajax то utf-8 важно, если просто выборка и вывод то можно и в cp1251. Важно чтобы кодировка в базе соответствовала кодировке указанной в странице в тегах(для utf-8):
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="ru">
А также сами данные были в той же кодировке.
Если вы всё проверили, а данные всё ещё не читабельны.
смотрите заголовки посылаемые сервером
на сервер заголовки устанавливаются либо через apache либо в самом php скрипте:
header("Content-type: text/html; charset=utf-8");
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
24.10.2010, 11:28
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от Golovastik
|
Написал так
<?php
mysql_query("SET NAMES utf8");
$server = 'localhost'; //Имя сервера
$user = 'xai'; //Логин
$password = 't37du78ah4'; //Пароль
$db = 'video';
$table = 'lessons'; //Название таблицы
$error_database = '<h2>Произошла ошибка в базе данных,<br/>
в ближайшее время она будет устранена!</h2>';
$connect = mysql_connect($server,$user,$password);
if(!$connect){
echo $error_database;
exit;
};
//$connect по какому соединению мы работаем
$select = mysql_select_db($db,$connect);
if(!$select){
echo $error_database;
exit;
};
?>
|
А как это вы делаете запрос к базе(mysql_query("SET NAMES utf8")), до соединения с ней?
сначала mysql_connect, mysql_select_db и только потом mysql_query
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Последний раз редактировалось Gozar, 24.10.2010 в 11:30.
Причина: реверсная очепятка
|
|
26.10.2010, 02:53
|
|
Профессор
|
|
Регистрация: 12.08.2010
Сообщений: 221
|
|
Вот полное состояние моей базы, выражены на фото.
У меня есть файл 1.php в нём такой код:
Код:
|
<?php
include '../blocks/database.php'; /*Соединяемся с Базой Данных*/
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" type="text/css" href="style.css" />
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Видеокурсы по заработку в Интернет</title>
</head>
<body>
<!--Шапка сайта -->
<?php include '../blocks/header.php' ?>
<!--Левая навигация-->
<?php include '../blocks/navigator_left_zar_v_internet.php' ?>
<!--Правая навигация-->
<?php include '../blocks/navigator_right_zar_v_internet.php' ?>
<!--Контент-->
<?php include '../blocks/kontent1.php' ?>
<!--Copyright-->
<?php include '../blocks/footer.php' ?>
</body>
</html> |
Через файл kontent1.php я вывожу всё с базы на экран, вот содержимое
kontent1.php
Код:
|
<div class="center">
<div class="zagolovok">Компьютерные видеокурсы для начинающих</div> <br />
<?php
include '../blocks/database.php'; /*Соединяемся с Базой Данных*/
?>
<?php
//Число постов выводящих на странице
$num = 3;
@$page = $_GET['page'];
if(empty($page)){
$page = 1;
}
$result = mysql_query("select COUNT(*) FROM lessons2",$connect);
$posts = mysql_result($result,0);
//Находим общее количество страниц
$chislo_str = intval(($posts-1)/$num)+1;
$page = intval($page);
//empty($page) Если переменной не существует или ее значение равно нулю
if(empty($page) or $page<0) $page = 1;
if($page > $chislo_str) $page = $chislo_str;
// Если ввести $page=7 тогда 7*3-3=18
//с 18 поста будет выводится пост 18,19,20 на странице №7
$start = $page * $num - $num;
/*--------------------Выводов Постов--------------------------------------*/
if ( isset ( $_GET['id'] ) ) {
//Увеличиваем заданный счетчик
$update = mysql_query ( "UPDATE `lessons2` SET `lessons2`.`obnovlenie` = `lessons2`.`obnovlenie` + 1 WHERE `lessons2`.`id` = {$_GET['id']} LIMIT 1" ) or die ( mysql_error() );
//Запрос на выборку из нашей таблицы
$query = mysql_query ( "SELECT * FROM `lessons2` WHERE `lessons2`.`id` = {$_GET['id']} LIMIT 1" ) or die ( mysql_error() );
//Получаем результат
$resalt = mysql_fetch_assoc ( $query );
//Выводим полную новость
echo $resalt['podrobnosti'];
// '<br /><a href="', $_SERVER['HTTP_REFERER'], '" title="Назад">Назад</a>';
}
else{
//Запрос на выборку из нашей таблицы
$query = mysql_query ( "SELECT * FROM lessons2 LIMIT $start, $num" ) or die ( mysql_error() );
while ( $resalt = mysql_fetch_assoc ( $query ) ) {
echo $resalt['text'], '</a> <span class="prosmotrov" style="line-height:45px;">Просмотров: <span class="green schetok1">',$resalt['obnovlenie'], '</span></span> ';
}
//------------------------------------------------
// Стрелка назад
if($page>1)
$nazad= '<a class="knopka_nazad1" href= ./1.php?page='.($page-1).'>Назад</a>';
else $nazad= '<span class="knopka_nazad2">Назад</span>';
//Стрелка вперед
if($page<$chislo_str)
$vpered = '<a class="knopka_vpered1" href= ../videolessons/1.php?page='.($page + 1).'>Вперёд</a>';
else $vpered= '<span class="knopka_vpered2">Вперёд</span>';
// Вывод меню
$expand_to = 4; // сколько страниц должно показываться слева и справа от текущей
// начало и конец "соседних" страниц
$a = $page - $expand_to; if ($a < 1) $a = 1;
$b = $page + $expand_to; if ($b > $chislo_str) $b = $chislo_str;
if ($a > 1) // надо ли показывать отдельно ссылку на первую и "..."
{
$navigation[] = "<a href=\"./1.php?page=1\">1</a>";
if ($a > 2) $navigation[] = "...";
}
// генерируем ссылки на "соседние" страницы
for ($i = $a; $i <= $b; $i++)
$navigation[] = ($page == $i) ? '<span class="tek_str">'.$i.'</span>' : "<a class='str_nav' href=\"./1.php?page=$i\">$i</a>";
if ($b < $chislo_str) // надо ли показывать отдельно "..." и ссылку на последнюю
{
if ($b < $chislo_str - 1) $navigation[] = '...';
$navigation[] = "<a href=\"./1.php?page=$chislo_str\">$chislo_str</a>";
}
// выводим готовую навигацию
echo '<div class="navig"'.$nazad.' '.implode(' ', $navigation).' '.$vpered.'</div>';
}
?>
<!---------------------------------------------------------------------------->
</div>
<!----------------------------------------------------------------------------> |
Файл database.php
Код:
|
<?php
$server = 'localhost'; //Имя сервера
$user = 'xai'; //Логин
$password = '12345'; //Пароль
$db = 'video';
$table = 'lessons'; //Название таблицы
$error_database = '<h2>Произошла ошибка в базе данных,<br/>
в ближайшее время она будет устранена!</h2>';
$connect = mysql_connect($server,$user,$password);
if(!$connect){
echo $error_database;
exit;
};
//$connect по какому соединению мы работаем
$select = mysql_select_db($db,$connect);
if(!$select){
echo $error_database;
exit;
};
?> |
На локальном компьютере всё достаёт русским, как пробую на
phpmyadmin 5 версии(там хостинг), такие кракозябры вылетают, уже не знаю что делать.
|
|
|
|