[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Супер пуер UTF-8
Игорь_Vasinsky
Странно раньше достаточно было сделать после соединения:

mysql_query("SET NAMES 'utf8'");


а теперь нехрена не канает.

1. Текст на страницах (сами "страницы" - все) php - utf8
2. БД и поля в ней - utf8
3. имеем header('Content-type: text/html; charset=utf-8');
4. имеем <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5. .htaccess -> AddDefaultCharset UTF-8


и при выводе из бд имеем КВАДРАТИКИ.

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

выручайте. всё таки решил полностью перебратьсяна utf8.


запрос к бд:
SHOW VARIABLES WHERE Variable_name LIKE '%character%' OR Variable_name LIKE '%collation%' OR Variable_name = 'init_connect'


выдаёт:

character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
character_sets_dir \usr\local\mysql-5.1\share\charsets\
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server cp1251_general_ci
init_connect set names cp1251


Collation-таблицы utf8_general_ci


ПРИ СМЕНЕ В БРАУЗЕРЕ НА ANSI - выдача на 5 - текст на кирилице.

где чё сменить ? ума не прилажу.....



Спустя 42 минуты, 58 секунд (24.11.2010 - 22:26) Игорь_Vasinsky написал(а):
ау

Спустя 37 минут, 50 секунд (24.11.2010 - 23:03) inpost написал(а):
Не смотря на то, что таблицы ЮТФ, там занесёт текст в АНСИ, для того, чтобы работал - надо снести тот текст, и заново добавить!

Спустя 5 минут, 29 секунд (24.11.2010 - 23:09) Игорь_Vasinsky написал(а):
тка щас ввел новый текст и такая же байда... квадратики

Спустя 4 минуты, 41 секунда (24.11.2010 - 23:14) inpost написал(а):
mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER SET utf8');
mysql_query('SET COLLATION_CONNECTION="utf8_general_ci"');


Давай сюда скрин-шоты: кода (вырежи ненужное), БД (структура таблицы этой), htaccess.

В добавок открой в программе(к примеру - дримвейвер), нам правой кнопкой по середине экрана, свойства - выбери кодировку utf-8, reload, save.

Спустя 12 минут, 24 секунды (24.11.2010 - 23:26) Игорь_Vasinsky написал(а):
Цитата
mysql_query('SET NAMES utf8');mysql_query('SET CHARACTER SET utf8');mysql_query('SET COLLATION_CONNECTION="utf8_general_ci"');


это тож не проканало..пробовал.

ща скриныделаю.


Спустя 14 минут, 6 секунд (24.11.2010 - 23:40) Игорь_Vasinsky написал(а):
как я уже писал

1. Текст на страницах (сами "страницы" - все) php - utf8
2. БД и поля в ней - utf8
3. имеем header('Content-type: text/html; charset=utf-8');
4. имеем <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5. .htaccess -> AddDefaultCharset UTF-8

сорри за качесто, фотошоп пдвис... сорел говно. что что а разрешение как раз)))))))))

Свернутый текст
user posted image
user posted image

Спустя 14 минут, 37 секунд (24.11.2010 - 23:55) phz написал(а):
В пхпадмине еще посмотри. Нажми на "Operations" и там внизу "Collation"

может поможет

Спустя 59 секунд (24.11.2010 - 23:56) Игорь_Vasinsky написал(а):
да ну всё - везде где тока знал поставтил... полтергейст какойто.

Спустя 31 минута, 14 секунд (25.11.2010 - 00:27) Игорь_Vasinsky написал(а):
ну.. ещё предложения есть?

Спустя 1 минута, 17 секунд (25.11.2010 - 00:28) inpost написал(а):
Добавь новую запись, посмотри, тоже самое будет? Текст не копируй, а просто введи любой свой.

И код страницы полностью в студию.

Спустя 7 минут, 52 секунды (25.11.2010 - 00:36) kovaldm написал(а):
Была у меня такая байда.
Вот это попробуй.
    mysql_query("SET character_set_client `utf8`");
mysql_query("SET character_set_connection `utf8`");
mysql_query("SET character_set_results `utf8`");

Но мне это не помогло, хотя должно было и я сделал по другому.
Таблица в БД изначально была в cp-1251 и никакие махинации с MyAdmin не помогли, вот так заработало.
    mysql_query("SET character_set_client `utf8`");
mysql_query("SET character_set_connection `cp1251`");
mysql_query("SET character_set_results `utf8`");

Спустя 2 минуты, 3 секунды (25.11.2010 - 00:38) inpost написал(а):
kovaldm
Опять эти пересечения? Проблемы будут. Надо полностью перевести.

Спустя 1 минута, 26 секунд (25.11.2010 - 00:39) kovaldm написал(а):
inpost
Цитата
Опять эти пересечения?

Пардон, это ты о чем?

Спустя 1 минута, 50 секунд (25.11.2010 - 00:41) inpost написал(а):
mysql_query("SET character_set_connection `cp1251`"); - об этой фразе.

Спустя 1 минута, 36 секунд (25.11.2010 - 00:43) kovaldm написал(а):
А что смущает?
character_set_connection - указывает, в какую кодировку следует преобразовать данные полученые от клиента перед выполнением запроса
Если таблица в cp-1251, то запрос перекодируется и все будет айс.

Или, если могут быть проблемы, снести таблицу и создать в UTF-8.

Спустя 3 минуты, 39 секунд (25.11.2010 - 00:47) Игорь_Vasinsky написал(а):

новые данные вбиваю - тож квадратики.

дня 3 назад я поэтому обратно на cp1251 и вернулся, а сёдня решил побороть.... не хрена

парни.. ну эт я всё пробывал... а код здесь не поможет (метатеги и хеадер в utf8)... я же говорю - что везде гд мог залезть - залез - везде utf-8.

вот же нагло всплывает ansi:

character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
character_sets_dir \usr\local\mysql-5.1\share\charsets\
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server cp1251_general_ci
init_connect set names cp1251

где это дело поменять - незнаю

Спустя 1 минута, 9 секунд (25.11.2010 - 00:48) inpost написал(а):
Всё в ЮТФ, потом снести не только ячейку, но и всю таблицу!
Создать новую таблицу в нормальной кодировке, и я думаю - будет праздник!

Спустя 49 секунд (25.11.2010 - 00:49) kovaldm написал(а):
Игорь_Vasinsky
Цитата
а код здесь не поможет

С чего это? Покажи как обрабатываешь текст перед выводом.

Спустя 13 минут, 23 секунды (25.11.2010 - 01:02) Игорь_Vasinsky написал(а):
Снёс базу - создал - sql - баз создана (кстати дам был в анси - я на пямую через sql запрос создал)

непомогло

данные перед выводом не обрабатываю, обрабатываю подключение в конфиге

mysql_query("SET character_set_client `utf8`");    
mysql_query("SET character_set_connection `utf8`");
mysql_query("SET character_set_results `utf8`");



страница созлаётся из 3х инклудов - на 2х (тож сделал вывод из БД) выводится кирилица, а в теле Index - квадраты.

удалил сам индекс - создал новый в utf (он и был в utf) - не помогает.

Спустя 3 минуты, 20 секунд (25.11.2010 - 01:05) Игорь_Vasinsky написал(а):
ну явно cp1251 лезет нагло - сменил в браузере кодировку - итог: везде байда, а вывод из бд на кирилице... где она прёт так.......

Спустя 1 минута, 41 секунда (25.11.2010 - 01:07) inpost написал(а):
Зачем через дамб? Просто в phpMyAdmin зашел, там кнопка: "Создать новую таблицу", так и создал!

Спустя 8 секунд (25.11.2010 - 01:07) kovaldm написал(а):
В БД тоже квадраты?

Спустя 6 минут, 27 секунд (25.11.2010 - 01:14) Игорь_Vasinsky написал(а):
да да я и зоздал и phpmyadmin..........

не ...... в БД всё в ажуре - нормальный вид - кириллица.

у меня перед выводом подключён класс постраничной навигации, но подключение я от туда вынес в config

там уменя так:

$link = mysql_connect(HOST, USER, PASS) or die("Ошибка подключения к серверу MySQL.");
$_DB = new mysqli(HOST,USER,PASS,DB);
mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER SET utf8');
mysql_query('SET COLLATION_CONNECTION="utf8_general_ci"');
$dbSelect = mysql_select_db(DB, $link) or die("Не могу выбрать БД");


вот листинг класса... мож я чё не вижу:

Свернутый текст

<?
class
Paging {
private $page_size = 3;
private $link_padding = 10;
private $page_link_separator = ' ';
private $next_page_text = 'следующая >';
private $prev_page_text = '< предыдущая';
private $result_text_pattern = 'Показано с %s по %s из %s';
private $page_var = 'page';

private $db;
private $q;
private $total_rows;
private $total_pages;
private $cur_page;

public function __construct($db, $q='', $page_var='page')
{
$this->db = $db;
if ($q) $this->set_query($q);
$this->page_var = $page_var;
$this->cur_page = isset($_GET[$this->page_var]) && (int)$_GET[$this->page_var] > 0 ? (int)$_GET[$this->page_var] : 1;
}

public function set_query($q)
{
$this->q = $q;
}

public function set_page_size($page_size)
{
$this->page_size = abs((int)$page_size);
}

public function set_link_padding($padding)
{
$this->link_padding = abs((int)$padding);
}

public function get_page($q='')
{
if ($q) $this->set_query($q);

$r = $this->db->query( $this->query_paging($this->q) );
$this->total_rows = array_pop($this->db->query('SELECT FOUND_ROWS()')->fetch_row());

if ($this->page_size !== 0) $this->total_pages = ceil($this->total_rows/$this->page_size);

if ($this->cur_page > $this->total_pages)
{
$this->cur_page = $this->total_pages;
if ( $this->total_pages > 0 ) $r = $this->db->query( $this->query_paging($this->q) );
}

return $r;
}

public function get_result_text()
{
$start = (($this->cur_page-1) * $this->page_size)+1;
$end = (($start-1+$this->page_size) >= $this->total_rows)? $this->total_rows:($start-1+$this->page_size);

return sprintf($this->result_text_pattern, $start, $end, $this->total_rows);
}

public function get_page_links()
{
if ( !isset($this->total_pages) ) return '';

$page_link_list = array();

$start = $this->cur_page - $this->link_padding;
if ( $start < 1 ) $start = 1;
$end = $this->cur_page + $this->link_padding-1;
if ( $end > $this->total_pages ) $end = $this->total_pages;

if ( $start > 1 ) $page_link_list[] = $this->get_page_link( $start-1, $start - 2 > 0 ? '...' : '' );
for ($i=$start; $i <= $end; $i++) $page_link_list[] = $this->get_page_link( $i );
if ( $end + 1 < $this->total_pages ) $page_link_list[] = $this->get_page_link( $end +1, $end + 2 == $this->total_pages ? '' : '...' );
if ( $end + 1 <= $this->total_pages ) $page_link_list[] = $this->get_page_link( $this->total_pages );

return implode($this->page_link_separator, $page_link_list);
}

public function get_next_page_link()
{
return isset($this->total_pages) && $this->cur_page < $this->total_pages ? $this->get_page_link( $this->cur_page + 1, $this->next_page_text ) : '';
}

public function get_prev_page_link()
{
return isset($this->total_pages) && $this->cur_page > 1 ? $this->get_page_link( $this->cur_page - 1, $this->prev_page_text ) : '';
}

private function get_page_link($page, $text='')
{
if (!$text) $text = $page;

if ($page != $this->cur_page)
{
$reg = '/((&|^)'.$this->page_var.'=)[^&#]*/';
$url = '?'.( preg_match( $reg, $_SERVER['QUERY_STRING'] ) ? preg_replace($reg, '${1}'.$page, $_SERVER['QUERY_STRING']) : ( $_SERVER['QUERY_STRING'] ? $_SERVER['QUERY_STRING'].'&' : '' ).$this->page_var.'='.$page);
return '<b class="vizit2"><a class="black" href="'.$url.'">'.$text.'</a></b></span>';
}
return '<b class="vizit">'.$text.'</b>';
}

private function query_paging()
{
$q = $this->q;

if ($this->page_size != 0)
{
//calculate the starting row
$start = ($this->cur_page-1) * $this->page_size;
//insert SQL_CALC_FOUND_ROWS and add the LIMIT
$q = preg_replace('/^SELECT\s+/i', 'SELECT SQL_CALC_FOUND_ROWS ', $this->q)." LIMIT {$start},{$this->page_size}";
}

return $q;
}
}
?>

Спустя 7 минут, 1 секунда (25.11.2010 - 01:21) kovaldm написал(а):
Так пробовал?
    mysql_query("SET character_set_client `utf8`");
mysql_query("SET character_set_connection `cp1251`");
mysql_query("SET character_set_results `utf8`");

Спустя 2 минуты, 21 секунда (25.11.2010 - 01:23) Игорь_Vasinsky написал(а):
ща попробовал - безрзультатно.

вот header

Свернутый текст

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html>
<
head>
<
title></title>
<
link rel="icon" href="/favicon.ico" type="image/x-icon" />
<
link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
link rel="stylesheet" href="nwsdesign.css" type="text/css" />
<
meta content="5 days" name="revisit" />
<
meta content="index, follow" name="robots" />
<
meta name="keywords" content=""/>
<
meta name="description" content=""/>
<
script src="js/typeface-0.14.js"></script>
<
script src="js/helvetiker_regular.typeface.js"></script>
<
script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
<
script type="text/javascript" src="js/zoomi.js"></script>
<
script src="js/prototype.js" type="text/javascript"></script>
<
script src="js/scriptaculous/scriptaculous.js?load=effects,controls" type="text/javascript"></script>
</
head>


вот сам index

Свернутый текст


<?php
header('Content-type: text/html; charset=utf-8');
include "./admincinema/config.php";
include "./header.php";
<?php include "./left.php";?>

<?php

require('./paging.inc.php');
$_PAGING = new Paging($_DB);
$r = $_PAGING->get_page( 'SELECT * FROM FILMS' );
while($row = $r->fetch_assoc())
{
// вывод из БД
}
echo $_PAGING->get_prev_page_link();
echo $_PAGING->get_page_links();
echo $_PAGING->get_next_page_link();
$result = mysql_query("SELECT * FROM FILMS");
$myrow = mysql_fetch_array ($result);
do {
$name = $myrow["name"];
$origname = $myrow["origname"];
$description = $myrow["description"];
$acters = $myrow["acters"];
$director = $myrow["director"];
}
while ($myrow = mysql_fetch_array ($result)) ;
mysql_close(); // отключение от БД
?>

<?php
include "./right.php";?>

Спустя 9 минут, 12 секунд (25.11.2010 - 01:32) kovaldm написал(а):
Кароче.
В MyAdmin в БД во вкладке SQL выполни такую команду
SHOW VARIABLES

Интересует вот это:

character_set_client
character_set_database
character_set_results
character_set_connection

Спустя 2 минуты, 34 секунды (25.11.2010 - 01:35) Игорь_Vasinsky написал(а):
я же выше писал:

character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
character_sets_dir \usr\local\mysql-5.1\share\charsets\
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server cp1251_general_ci
init_connect set names cp1251


Спустя 3 минуты, 23 секунды (25.11.2010 - 01:38) Игорь_Vasinsky написал(а):
вот по сежее данные

character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server cp1251
character_set_system utf8
character_sets_dir \usr\local\mysql-5.1\share\charsets\
collation_connection utf8_general_ci

Спустя 3 минуты, 31 секунда (25.11.2010 - 01:42) Игорь_Vasinsky написал(а):
вот снова

init_connect set names cp1251
collation_server cp1251_general_ci
character_set_server cp1251

Спустя 7 минут, 10 секунд (25.11.2010 - 01:49) Игорь_Vasinsky написал(а):
вообщм если я из дампа гружу в БД в Character set of the file cp1251

то phpmyadmin - иероглифы - зато вывод нормальный (но мне подсказывает внутренней голос что на хосте провайдера я опять на эти грабли наступлю).

я и хочу чтоб всё было в utf8

Спустя 2 минуты, 23 секунды (25.11.2010 - 01:51) kovaldm написал(а):
Бащка савсем не варит.
Цитата
зато ввод нормальный

Ввод или вывод? А раньше ввод был ненормальный?

Спустя 3 минуты, 14 секунд (25.11.2010 - 01:54) Игорь_Vasinsky написал(а):
вывод... клава засорена опечатался

Спустя 47 секунд (25.11.2010 - 01:55) Игорь_Vasinsky написал(а):
был квдратами вывод раньше, авв базе кириллица

а терь наоборот, если дамп гружу в анси.

Спустя 14 минут, 8 секунд (25.11.2010 - 02:09) kovaldm написал(а):
Давай до завтра отложим этот вопрос. Поздно уже. Да и спецов побольше подтянется.

Спустя 3 минуты, 8 секунд (25.11.2010 - 02:12) Игорь_Vasinsky написал(а):
лан. у меня уже рано........ пятый час.. в 8 вставать

Спустя 13 минут, 1 секунда (25.11.2010 - 02:25) kirik написал(а):
Есть же функция специальная для настройки кодировки соединения. Тыц.

Спустя 5 часов, 55 минут, 45 секунд (25.11.2010 - 08:21) Игорь_Vasinsky написал(а):
kirik

у меня соединение проходит в utf-8

вот посл запроса переменных:

SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';


сервер возвращает:

collation_connection utf8_general_ci 
collation_database utf8_general_ci
collation_server cp1251_general_ci

Спустя 8 минут, 19 секунд (25.11.2010 - 08:29) Игорь_Vasinsky написал(а):
и вот ещё: у меня 2 соединения:

$link = mysql_connect(HOST, USER, PASS) or die("Ошибка подключения к серверу MySQL.");
$_DB = new mysqli(HOST,USER,PASS,DB);


$link - даёт вывод в utf-8 и крилица отображается нормально,

а вот $_DB - ни в какакую, выдаёт квадраты вместо кириллицы.

ставил вот это в конфиге(после конекта к БД):

$charset = "windows-1251"; // utf-8 (utf8)
if (function_exists('mysql_set_charset') === false) {
function mysql_set_charset($charset, $_DB= null)
{
if ($_DB == null) {
return mysql_query('SET NAMES "'.$charset.'"');
} else {
return mysql_query('SET NAMES "'.$charset.'"', $_DB);
}
}
}


ни каких изменений.

Спустя 1 час, 25 минут, 27 секунд (25.11.2010 - 09:55) kirik написал(а):
Игорь_Vasinsky
Для mysql юзай mysql_set_charset а для mysqli - mysqli_set_charset


Цитата (Игорь_Vasinsky @ 25.11.2010 - 00:29)
ставил вот это в конфиге(после конекта к БД):

Покажи как ставил?

Спустя 4 минуты, 33 секунды (25.11.2010 - 09:59) Игорь_Vasinsky написал(а):
ну вот же предидущий пост.

соединение - потом эта функция.

Спустя 4 минуты, 47 секунд (25.11.2010 - 10:04) kirik написал(а):
Цитата (Игорь_Vasinsky @ 25.11.2010 - 01:59)
соединение - потом эта функция.

Так ты же ее не вызываешь таким образом..

$link = mysql_connect('localhost','user1','pass1'); // сначала коннектимся
mysql_selectdb('db1',$link); // потом выбираем БД
mysql_set_charset('utf8',$link); // и выставляем кодировку


То что ты вставил это просто просто замена этой функции, на случай если ее не будет в php. Убери этот кусок кода у себя, а если будет ругаться на отстутствие функции mysql_set_charset - верни.

UPD
Цитата (Игорь_Vasinsky @ 25.11.2010 - 00:29)
а вот $_DB - ни в какакую, выдаёт квадраты вместо кириллицы.

А если у тебя соединение через mysqli не корректно работает, то юзай пример с php.net:

$mysqli = new mysqli("localhost", "my_user", "my_password", "test");

/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}

/* change character set to utf8 */
if (!$mysqli->set_charset("utf8")) {
printf("Error loading character set utf8: %s\n", $mysqli->error);
} else {
printf("Current character set: %s\n", $mysqli->character_set_name());
}

Спустя 7 минут, 45 секунд (25.11.2010 - 10:12) Игорь_Vasinsky написал(а):
$link = mysql_connect(HOST, USER, PASS) or die("Ошибка подключения к серверу MySQL.".mysql_error());
$_DB = new mysqli(HOST,USER,PASS,DB);

mysql_selectdb(DB,$link); // потом выбираем БД
mysql_set_charset('utf8',$_DB); // и выставляем кодировку
$dbSelect = mysql_select_db(DB, $link) or die("Не могу выбрать БД".mysql_error());



результат:
Warning: mysql_set_charset() expects parameter 2 to be resource, object given in
config.php

как я ранее говорил у меня 2 подключения: $link и $_DB

$link - работат нормльно
$_DB - выдаёт квадраты

Спустя 2 минуты, 49 секунд (25.11.2010 - 10:15) kirik написал(а):
Игорь_Vasinsky
Ты сам свой код перечитывал? Зачем ты два раза выбираешь БД? И почему используешь mysql_set_charset для mysqli ?

Спустя 51 секунда (25.11.2010 - 10:16) linker написал(а):
Ну тебе ж написали для твоего $_DB
/* change character set to utf8 */
if (!$mysqli->set_charset("utf8")) {
printf("Error loading character set utf8: %s\n", $mysqli->error);
} else {
printf("Current character set: %s\n", $mysqli->character_set_name());
}

Спустя 2 минуты, 34 секунды (25.11.2010 - 10:18) Игорь_Vasinsky написал(а):
2 выбор БД я закоментировал, твой поставил. просо тут он залез, у меня закомментирован.

Цитата
И почему используешь mysql_set_charset для mysqli ?


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

как с ним работать?

Спустя 24 секунды (25.11.2010 - 10:19) kirik написал(а):
Дабы прояснить все. Вот такой код тебе нужен:
// MySQL
$m = mysql_connect(HOST, USER, PASS) or die('Ошибка подключения к серверу MySQL.' . mysql_error());
mysql_selectdb(DB, $m) or die('Не могу выбрать БД' . mysql_error());
mysql_set_charset('utf8', $m); // и выставляем кодировку


// MySQLi

$mI = new mysqli(HOST, USER, PASS, DB);
$mI->set_charset('utf8');


Когда пишешь две похожие операции не мешай их, а то запутаться просто где с чем работаешь.

Спустя 1 минута, 33 секунды (25.11.2010 - 10:20) Игорь_Vasinsky написал(а):
Цитата
if (!$mysqli->set_charset("utf8")) {   
printf("Error loading character set utf8: %s\n", $mysqli->error);
}
else {   
  printf("Current character set: %s\n", $mysqli->character_set_name());
  }


выдал:

Fatal error: Call to a member function set_charset() on a non-object in config.php

Спустя 3 минуты, 13 секунд (25.11.2010 - 10:23) linker написал(а):
Игорь_Vasinsky
Kirik тебе уже все написал.

Спустя 4 минуты, 52 секунды (25.11.2010 - 10:28) Игорь_Vasinsky написал(а):
Цитата
// MySQL$m = mysql_connect(HOST, USER, PASS) or die('Ошибка подключения к серверу MySQL.' . mysql_error());mysql_selectdb(DB, $m) or die('Не могу выбрать БД' . mysql_error());mysql_set_charset('utf8', $m); // и выставляем кодировку// MySQLi$mI = new mysqli(HOST, USER, PASS, DB);$mI->set_charset('utf8');




без изменений....

давайте я вм господа какие нибудь переменные из БД выложу? чтоб наглядно видно было что в utf что не utf

Спустя 4 минуты, 42 секунды (25.11.2010 - 10:33) kirik написал(а):
Игорь_Vasinsky
Значит кодировка таблиц у тебя другая, раз не работает.
Дампы большие?

Спустя 3 минуты, 40 секунд (25.11.2010 - 10:37) Игорь_Vasinsky написал(а):
дампы нет... но там 24 столбца......

я говорю - может акие переменные вам показать чтоб выяснить откуда анси всплывает?

Спустя 5 минут, 4 секунды (25.11.2010 - 10:42) kirik написал(а):
Цитата (Игорь_Vasinsky @ 25.11.2010 - 02:37)
может акие переменные вам показать чтоб выяснить откуда анси всплывает?

Чего толку с переменных-то? Мы их выставляем нужные своим кодом.
Значит есть 2 варианта:
- кодировка таблицы не utf8
- денвер косячит smile.gif (если у тебя он, конечно..)

Спустя 4 минуты, 8 секунд (25.11.2010 - 10:46) Игорь_Vasinsky написал(а):
денверррр

но база одна - и один вывод нормальный, а другй нет

чё ж выходит БД смотрит чеез какое подключение происходит и начанает как хамелион менять кодировку..........

$link = mysql_connect(HOST, USER, PASS) or die("Ошибка подключения к серверу MySQL.".mysql_error());

$link без mysql_set_charset('utf8'); работает замечательно

$_DB = new mysqli(HOST,USER,PASS,DB); - ?????????

Спустя 3 минуты, 18 секунд (25.11.2010 - 10:49) kirik написал(а):
Цитата (Игорь_Vasinsky @ 25.11.2010 - 02:46)
$link без mysql_set_charset('utf8'); работает замечательно

Без не нужно. Даже если и работает - оставь его.

Цитата (Игорь_Vasinsky @ 25.11.2010 - 02:46)
денверррр

А попробуй поставить все это дело на нормальный хостинг. Что-то мне подсказывает что проблема решится.

Спустя 2 минуты, 54 секунды (25.11.2010 - 10:52) Игорь_Vasinsky написал(а):
может.......... но отладка то на денвере... А где СТАРШИЙ БАРС ???

раньше он проявлял интерес к моим постам если я в тупике... совет какой нить даст......

Спустя 3 минуты, 16 секунд (25.11.2010 - 10:55) kirik написал(а):
Цитата (Игорь_Vasinsky @ 25.11.2010 - 02:52)
может.......... но отладка то на денвере...

Знать хотя бы будешь точно что проблема не в коде.

Спустя 3 минуты, 44 секунды (25.11.2010 - 10:59) Игорь_Vasinsky написал(а):
а в классе от mysqli(HOST, USER, PASS, DB); можно избавиться?

привести его к моему $link ?

подключение так:

$_PAGING = new Paging($_DB);

Свернутый текст

<?
class Paging {
private $page_size = 3;
private $link_padding = 10;
private $page_link_separator = ' ';
private $next_page_text = 'следующая >';
private $prev_page_text = '< предыдущая';
private $result_text_pattern = 'Показано с %s по %s из %s';
private $page_var = 'page';

private $db;
private $q;
private $total_rows;
private $total_pages;
private $cur_page;
public function __construct($db, $q='', $page_var='page')
{
$this->db = $db;
if ($q) $this->set_query($q);
$this->page_var = $page_var;
$this->cur_page = isset($_GET[$this->page_var]) && (int)$_GET[$this->page_var] > 0 ? (int)$_GET[$this->page_var] : 1;
}

public function set_query($q)
{
$this->q = $q;
}

public function set_page_size($page_size)
{
$this->page_size = abs((int)$page_size);
}

public function set_link_padding($padding)
{
$this->link_padding = abs((int)$padding);
}

public function get_page($q='')
{
if ($q) $this->set_query($q);

$r = $this->db->query( $this->query_paging($this->q) );
$this->total_rows = array_pop($this->db->query('SELECT FOUND_ROWS()')->fetch_row());

if ($this->page_size !== 0) $this->total_pages = ceil($this->total_rows/$this->page_size);

if ($this->cur_page > $this->total_pages)
{
$this->cur_page = $this->total_pages;
if ( $this->total_pages > 0 ) $r = $this->db->query( $this->query_paging($this->q) );
}

return $r;
}

public function get_result_text()
{
$start = (($this->cur_page-1) * $this->page_size)+1;
$end = (($start-1+$this->page_size) >= $this->total_rows)? $this->total_rows:($start-1+$this->page_size);

return sprintf($this->result_text_pattern, $start, $end, $this->total_rows);
}

public function get_page_links()
{
if ( !isset($this->total_pages) ) return '';

$page_link_list = array();

$start = $this->cur_page - $this->link_padding;
if ( $start < 1 ) $start = 1;
$end = $this->cur_page + $this->link_padding-1;
if ( $end > $this->total_pages ) $end = $this->total_pages;

if ( $start > 1 ) $page_link_list[] = $this->get_page_link( $start-1, $start - 2 > 0 ? '...' : '' );
for ($i=$start; $i <= $end; $i++) $page_link_list[] = $this->get_page_link( $i );
if ( $end + 1 < $this->total_pages ) $page_link_list[] = $this->get_page_link( $end +1, $end + 2 == $this->total_pages ? '' : '...' );
if ( $end + 1 <= $this->total_pages ) $page_link_list[] = $this->get_page_link( $this->total_pages );

return implode($this->page_link_separator, $page_link_list);
}

public function get_next_page_link()
{
return isset($this->total_pages) && $this->cur_page < $this->total_pages ? $this->get_page_link( $this->cur_page + 1, $this->next_page_text ) : '';
}

public function get_prev_page_link()
{
return isset($this->total_pages) && $this->cur_page > 1 ? $this->get_page_link( $this->cur_page - 1, $this->prev_page_text ) : '';
}

private function get_page_link($page, $text='')
{
if (!$text) $text = $page;

if ($page != $this->cur_page)
{
$reg = '/((&|^)'.$this->page_var.'=)[^&#]*/';
$url = '?'.( preg_match( $reg, $_SERVER['QUERY_STRING'] ) ? preg_replace($reg, '${1}'.$page, $_SERVER['QUERY_STRING']) : ( $_SERVER['QUERY_STRING'] ? $_SERVER['QUERY_STRING'].'&' : '' ).$this->page_var.'='.$page);
return '<b class="vizit2"><a class="black" href="'.$url.'">'.$text.'</a></b></span>';
}
return '<b class="vizit">'.$text.'</b>';
}

private function query_paging()
{
$q = $this->q;

if ($this->page_size != 0)
{
//calculate the starting row
$start = ($this->cur_page-1) * $this->page_size;
//insert SQL_CALC_FOUND_ROWS and add the LIMIT
$q = preg_replace('/^SELECT\s+/i', 'SELECT SQL_CALC_FOUND_ROWS ', $this->q)." LIMIT {$start},{$this->page_size}";
}

return $q;
}
}
?>

Спустя 10 минут, 10 секунд (25.11.2010 - 11:09) Игорь_Vasinsky написал(а):
короче таблицу сделл в ansi...

пусть . х - с ней.

Спустя 34 секунды (25.11.2010 - 11:10) twin написал(а):
Блин. Ну я же целую тему прикрепил как то...
У тебя база сделана до того. И в кодировке CP1251.

Сейчас ты как ни дуй, все равно получишь... вопросики.

Это похоже на то, что ты в бутылку налил лимонад. А теперь пытаешься получить водку, перелив его в бутылку из-под "абсолюта". Содержимое то не меняется.
Перекодировать надо базу.


Попробуй таблицу забэкапить, сделать такую же пустую с нормальными кодировками и заполнить парой строк. Что выйдет?

Спустя 4 минуты, 1 секунда (25.11.2010 - 11:14) Игорь_Vasinsky написал(а):
О. здрасть. понял. счас сдеаю. отпишусь.

Спустя 28 минут, 41 секунда (25.11.2010 - 11:42) Игорь_Vasinsky написал(а):
Через sql запрос в phmyadmin:

1. CREATE DATABASE `my_db` CHARACTER SET utf8 COLLATE utf8_general_ci;
2. таблица:

CREATE TABLE `TABLE` (
`id` int(11) NOT NULL AUTO_INCREMENT,
...
...
...
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=UTF8 ;

впихиваю данные - и снова квадраты

Большой Барс..... подстава....

Спустя 2 минуты, 11 секунд (25.11.2010 - 11:45) Игорь_Vasinsky написал(а):
вот вот:

$link = mysql_connect(HOST, USER, PASS) or die("Ошибка подключения к серверу MySQL.".mysql_error());
$_DB = new mysqli(HOST,USER,PASS,DB);
$m = mysql_connect(HOST, USER, PASS) or die('Ошибка подключения к серверу MySQL.' . mysql_error());
mysql_selectdb(DB, $m) or die('Не могу выбрать БД' . mysql_error());
mysql_set_charset('utf8', $m);
$mI = new mysqli(HOST, USER, PASS, DB);$mI->set_charset('utf8');
$dbSelect = mysql_select_db(DB, $link) or die("Не могу выбрать БД".mysql_error());
mysql_set_charset('utf8');


через $_DB = new mysqli(HOST,USER,PASS,DB); вылезают квадраты

Спустя 27 минут, 10 секунд (25.11.2010 - 12:12) twin написал(а):
Вот файл, в нем дамп. Попробуй ничего не меняя запустить.

Спустя 8 минут, 52 секунды (25.11.2010 - 12:21) Игорь_Vasinsky написал(а):
прошло:

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

какой вывод?

Спустя 9 минут, 7 секунд (25.11.2010 - 12:30) Игорь_Vasinsky написал(а):
я же объяснаю что подключен класс постраничного вывода - там соединение так:

$_DB = new mysqli(HOST, USER, PASS, DB);

вот именно отсюда вывод в квадратиках, а другой вывод из этой базы нормально проходит на этой же странице - из этих же столбцов

Спустя 25 минут, 5 секунд (25.11.2010 - 12:55) twin написал(а):
Даже думать не хочу. Что за дибильная система, которая для постранички требует второго соединения... Тем более через другую библиотеку.
Там такая адская смесь получается, конечно все глючит и перепуталось.

Спустя 8 минут, 20 секунд (25.11.2010 - 13:03) Игорь_Vasinsky написал(а):

подключеие к базе у класса так :

$_DB = new mysqli(HOST, USER, PASS, DB);


я переделал вот так:

$_DB = new mysqli(HOST, USER, PASS, DB);
$_DB->set_charset('utf8');


И УСЁ ЗАРАБОТАЛО !!!!!

Всем спасибо.

Спустя 2 минуты, 58 секунд (25.11.2010 - 13:06) Игорь_Vasinsky написал(а):
Теперь я плностью утээфный сайто ломастер!

Спустя 9 часов, 44 минуты, 57 секунд (25.11.2010 - 22:51) kirik написал(а):
Цитата (Игорь_Vasinsky @ 25.11.2010 - 05:03)
И УСЁ ЗАРАБОТАЛО !!!!!

А до этого не работало почему?


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.