Как сделать чтобы корректно сортировались, а также группировались кирилличные данные?
Для корректного вывода кириллических букв после создания базы данных,
Вам необходимо произвести следующие действия:
При создании БД в окно SQL в phpMyAdmin вставить:
ALTER DATABASE имя_Вашей_базы CHARACTER SET cp1251 COLLATE cp1251_general_ci;
Также сразу после коннекта к базе данных MySQL в Вашем скрипте должны присутствовать два запроса:
mysql_query ('SET NAMES cp1251');
mysql_query ('SET CHARACTER SET cp1251');
Пример ставки кода запроса в CMS PHP-Fusion версии 6.01.13:
строка 134 файла maincore.php
оригинальный файл PHP Fusion:
function dbconnect($db_host, $db_user, $db_pass, $db_name) { $db_connect = @mysql_connect($db_host, $db_user, $db_pass); $db_select = @mysql_select_db($db_name); if (!$db_connect) { die("<div style='font-family:Verdana;font-size:11px;text-align:center;'><b>Unable to establish connection to MySQL</b><br>".mysql_errno()." : ".mysql_error()."</div>"); } elseif (!$db_select) { die("<div style='font-family:Verdana;font-size:11px;text-align:center;'><b>Unable to select MySQL database</b><br>".mysql_errno()." : ".mysql_error()."</div>"); } }
исправленный файл PHP Fusion:
function dbconnect($db_host, $db_user, $db_pass, $db_name) { $db_connect = @mysql_connect($db_host, $db_user, $db_pass); $db_select = @mysql_select_db($db_name); mysql_query ('SET NAMES cp1251'); mysql_query ('SET CHARACTER SET cp1251'); if (!$db_connect) { die("<div style='font-family:Verdana;font-size:11px;text-align:center;'><b>Unable to establish connection to MySQL</b><br>".mysql_errno()." : ".mysql_error()."</div>"); } elseif (!$db_select) { die("<div style='font-family:Verdana;font-size:11px;text-align:center;'><b>Unable to select MySQL database</b><br>".mysql_errno()." : ".mysql_error()."</div>"); } }
В том случае, если у Вас есть готовый дамп базы данных, но Вам необходимо убедиться, что данные в нем хранятся в нужной Вам кодировке и что в запросах create table присутствует DEFAULT CHARSET=cp1251, Пример:
CREATE TABLE `test` (id int, value varchar(255)) DEFAULT CHARSET=cp1251;
В итоге, если у Вас есть работающий сайт (корректно работающий), а данные в таблицах БД сохраняются в кодировке latin1, (и, соответственно, корректно не показываются в phpmyadmin) - то Вам необходимо поставить и настроить отдельный скрипт для создания дампа, (мы рекомендуем попробовать воспользоватся скриптом http://sypex.net/) после чего самостоятельно проконвертировать все таблицы и данные в необходимую Вам кодировку и перезалить этот дамп БД с помошью phpmyadmin или самого скрипта (Sypex Dumper).
|