Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Всем доброго времени суток. Возникла глобальная проблема с кодировкой БД. Кодировка как говорят была вроде cp1251 до переноса на другой сервер. Сейчас все в utf8. Но в самой базе отображаются кракозябры. Вывод данных на сайт в cp1251 нормально. Подскажите как все данные перегнать в utf8. И вообще какая сейчас кодировка у данных? Декодер лебедева так показал CP1252 → CP1251. Вот пример:
-- phpMyAdmin SQL Dump
-- version 3.3.8.1
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Мар 24 2011 г., 12:22
-- Версия сервера: 5.1.47
-- Версия PHP: 5.2.9
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
-- --------------------------------------------------------
--
-- Структура таблицы `smf_boards`
--
CREATE TABLE IF NOT EXISTS `smf_boards` (
`ID_BOARD` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`ID_CAT` tinyint(4) unsigned NOT NULL DEFAULT '0',
`childLevel` tinyint(4) unsigned NOT NULL DEFAULT '0',
`ID_PARENT` smallint(5) unsigned NOT NULL DEFAULT '0',
`boardOrder` smallint(5) NOT NULL DEFAULT '0',
`ID_LAST_MSG` int(10) unsigned NOT NULL DEFAULT '0',
`ID_MSG_UPDATED` int(10) unsigned NOT NULL DEFAULT '0',
`memberGroups` varchar(255) NOT NULL DEFAULT '-1,0',
`name` tinytext NOT NULL,
`description` text NOT NULL,
`numTopics` mediumint(8) unsigned NOT NULL DEFAULT '0',
`numPosts` mediumint(8) unsigned NOT NULL DEFAULT '0',
`countPosts` tinyint(4) NOT NULL DEFAULT '0',
`ID_THEME` tinyint(4) unsigned NOT NULL DEFAULT '0',
`permission_mode` tinyint(4) unsigned NOT NULL DEFAULT '0',
`override_theme` tinyint(4) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`ID_BOARD`),
UNIQUE KEY `categories` (`ID_CAT`,`ID_BOARD`),
KEY `ID_PARENT` (`ID_PARENT`),
KEY `ID_MSG_UPDATED` (`ID_MSG_UPDATED`),
KEY `memberGroups` (`memberGroups`(48))
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=41 ;
--
-- Дамп данных таблицы `smf_boards`
--
INSERT INTO `smf_boards` (`ID_BOARD`, `ID_CAT`, `childLevel`, `ID_PARENT`, `boardOrder`, `ID_LAST_MSG`, `ID_MSG_UPDATED`, `memberGroups`, `name`, `description`, `numTopics`, `numPosts`, `countPosts`, `ID_THEME`, `permission_mode`, `override_theme`) VALUES
(14, 1, 0, 0, 1, 53867, 53867, '-1,0,2,9,14,17,18,19,20,21', '<font color="#FF0000">ÂÍÈÌÀÍÈÅ ÂÑÅÌ! ÏÐÀÂÈËÀ ÏÎËÜÇÎÂÀÍÈß ÔÎÐÓÌÎÌ</font>', 'ïðàâèëà ïîëüçîâàíèÿ è èõ îáñóæäåíèå', 4, 153, 0, 0, 0, 0),
(9, 1, 0, 0, 2, 79201, 79201, '-1,0,2,9,14,17,18,19,20,21', 'Âîïðîñû ïî ðàáîòå ôîðóìà', 'Âîïðîñû è ïîæåëàíèÿ', 35, 850, 0, 0, 0, 0),
(33, 1, 0, 0, 3, 79851, 79851, '-1,0,2,17,14,18,19,20,21', 'Ñèíãàïóð: íîâîñòè, ïîëèòèêà, èñòîðèÿ, êóëüòóðà, âåðîâàíèÿ, òðàäèöèè, àäàïòàöèÿ..', '', 114, 3667, 0, 0, 0, 0),
Неактивен
Вкратце: декодер Лебедева был прав.
Подробнее:
recode -f utf8..latin1 dump.sql
recode -f cp1251..utf8 dump.sql
Ну и ссылка на статью на всякий случай: http://sqlinfo.ru/articles/info/5.html
Неактивен
Спасибо большое помогло. Но теперь возникла проблема что сайту отдаются знаки вопроса. Возможно ли это из-за character_set_server latin1?
SHOW VARIABLES LIKE "char%"
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
Работает если вставить.
mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER SET utf8;");
Отредактированно recived (25.03.2011 23:59:03)
Неактивен
Если выставить mysql_query("SET CHARACTER SET utf8;"); то при то если например оставлять сообщения на форуме то вываливаются знаки вопроса. Если заккоментировать то нормально все.
Неактивен
Нужно делать SET NAMES в кодировку, которую ожидаете получить (кодировку
текста страниц сайта).
Неактивен
Страниц: 1