есть много инфы в базе мускула, в неправильной кодировке Пример: PHP: CREATE TABLE `j4u_category` ( `id` smallint(5) NOT NULL auto_increment, `parentid` smallint(5) NOT NULL default '0', `posi` smallint(5) NOT NULL default '1', `name` varchar(50) character set latin1 NOT NULL default '', `alt_name` varchar(50) character set latin1 NOT NULL default '', `icon` varchar(200) character set latin1 NOT NULL default '', `skin` varchar(50) character set latin1 NOT NULL default '', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=7 ; INSERT INTO `j4u_category` VALUES (1, 0, 1, 'Ãëà âГГ Гї', 'main', '', ''); INSERT INTO `j4u_category` VALUES (2, 0, 3, 'Êà ðòèГГЄГЁ', 'images', '', ''); INSERT INTO `j4u_category` VALUES (3, 0, 2, 'Г?ñòîðèè', 'story', '', ''); INSERT INTO `j4u_category` VALUES (4, 0, 4, 'Îáîè äëÿ ðà áî÷åãî ñòîëà ', 'Wallpapers', '', ''); INSERT INTO `j4u_category` VALUES (5, 0, 5, 'Äåâóøêè', 'Girls', '', ''); INSERT INTO `j4u_category` VALUES (6, 0, 6, '헾֏ГГ»', 'Mens', '', ''); с помощью iconv можно перевести в cp1251: PHP: echo iconv('UTF-8','latin1',file_get_contents('text.txt')); Вопрос так как база большая возможно ли сделать это средствами phpmyadmin или другими средстами, потому как iconv весь дамп таким образом не способен обрывает на середине... Полскажите плиз. Заранее вам благодарен.
stud2000 1. деалешь дамп в UTF-8 2. меняешь кодировки при создании таблиц на нужные. 3. заливаешь дамп обратно. p.s. я бы все хранил в UTF-8 а при коннекте выставлял нужную кодировку с помощью SET NAMES CP1251 например.
когда заливаю дамп вот такое выдает #1062 - Duplicate entry '??????' for key 2 Может я туплю, но я непонимаю почему так вот...
Млин, объясните по пунктам что делать... 1) я убиваю всю базу в ноль... 2) потом меняю в фале все PHP: `skin` varchar(50) character set latin1 NOT NULL default '' на `skin` varchar(50) character set cp1251 NOT NULL default '' и заливаю дамп обратно (вопрос в какой кодировке?) если в utf8 выдает такую ошибку а в cp1251 получается не легче т.е. иероглифы...
У меня в phpMyAdmin в форме, где на исполнение загружается *.sql файл есть select "кодировка файла". Видимо там нужно выбрать UTF. Хотя я что-то запутался. В столбцах у вас latin, в таблице cp1251, в инсертах UTF.
stud2000 1. делаешь дамп в UTF-8 2. открываешь файл редактором, который поддерживает UTF-8 (MSWord) 3. правишь кодировку 4. заливаешь обратно
Всем спасибо, решение найдено с помощью "штирлица" в нем надо было сделать encode utf и залить дамп обратно.
stud2000 в соседнем офисе сидит мой друг (Сева), который и писал этого "штирлица". я передал ему "привет" ...
А как быть с текстовыми полями типа varchar(10)? Известно что нелатинские символы в utf-8 занимают 2 байта вместо одного и поэтому, когда вставляешь русское слово в базу из 10 букв, база его обрезает. Как бороться с этим? Я менял величину varchar в базе везде на велечину вдвое большую... но кажется мне что есть другой, более гуманный вариант. Есть или нет?
Вообщем. муська сама всё замечательно конвертит. На текстовые поля выполняем запросики: Код (Text): ALTER TABLE my_table CHANGE COLUMN my_field my_field char(255) CHARACTER SET cp1251 NOT NULL DEFAULT '' Для примера ковертил char(255) с соотв параметрами.. Вообщем, проходимся по текстовым полям и всё ок. Но проще пользоваться прогой mysql-front чем самому всё это писать. З.Ы. муська 4.1.18
Из Мурманска ему тоже большой привет и респект... сэкономил много времени =) Как нить пивом проставимся =) * простите уж за флуд. Вырвалось