Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Дамп БД

Сообщения:  [1-10]    [11-20]  [21-24] 

 
 автор: Slo_Nik   (23.06.2010 в 22:17)   письмо автору
 
   для: sms-send   (23.06.2010 в 21:49)
 

>Так и нужно было ставить кодировку клиента cp1251, если данные хранились в этой кодировке
Действительно, это я не подумал...

  Ответить  
 
 автор: sms-send   (23.06.2010 в 21:49)   письмо автору
 
   для: Slo_Nik   (23.06.2010 в 21:23)
 

> // обработал данные iconv, без этого выдавало ошибку

Так и нужно было ставить кодировку клиента cp1251, если данные хранились в этой кодировке.

  Ответить  
 
 автор: Slo_Nik   (23.06.2010 в 21:23)   письмо автору
 
   для: Trianon   (22.06.2010 в 14:37)
 

Trianon, sms-send благодарю за подсказки, немного разобрался, что к чему.
теперь в pma, дамп базы нормально читаются.
сделал так

<?php 
require_once("connect1.php"); // подключение к исходной базе
mysql_query("set character_set_client = utf8"); 
mysql_query("set character_set_results = latin1"); 
mysql_query("set collation_connection = utf8_general_ci"); 

// запрос к таблице на получение данных
// обработал данные iconv, без этого выдавало ошибку
//подключение к новой базе данных
// запись изменённых данных в новую таблицу

mysql_query("set character_set_results = utf8");

// вывод данных из новой таблицы, всё читается
?>

ещё через .htaccess указал кодировку по умолчанию, utf8. все файлы в этой же кодировке, новая база и таблица - сравнение utf8_general_ci

  Ответить  
 
 автор: sms-send   (22.06.2010 в 23:34)   письмо автору
 
   для: Trianon   (22.06.2010 в 14:37)
 

OK, учту =)
просто как то неудобно получается.

  Ответить  
 
 автор: sms-send   (22.06.2010 в 23:17)   письмо автору
 
   для: Slo_Nik   (22.06.2010 в 15:18)
 

Допустим кто-то когда-то записал в эту базу слово "кириллица" в кодировке cp1251, но используя кодировку соединения latin1. База не сопротивлялась, потому что получила в запросе набор байт, который в кодировке latin1 соответствует строке в этом файле. Для базы всё абсолютно корректно.

* При извлечении данных с выходной кодировкой cp1251, база (которая честно думает, что держит в себе latin1) пытается преобразовать байты символов имеющейся строки кодированной latin1 в соответствующие байты символов кодировки cp1251, которых вобщем то в этой кодировке не существует. Все символы, которым не нашлось аналогов в cp1251, заменяются на знаки вопроса.
* При извлечении данных с выходной кодировкой latin1, база отдаёт строку как есть в кодировке latin1, т.е. ровно тот набор байт, который она получила, без преобразований.

При отображении в вашем браузере, этот набор байт трактуется браузером как строка в кодировке cp1251, которая соответствует исходному слову "кириллица". То есть на уровне байт мы имеем корректные данные в cp1251.

Теперь нужно эти данные просто записать в другую таблицу. СУБД при этом должна знать уже действительную кодировку строки (cp1251), чтобы знать как правильно трактовать полученный из текста запроса набор байт.

-----

character_set_client - кодировка, в которой клиент передаёт базе запросы
character_set_results - кодировка, в которой база возвращает результаты запросов

  Ответить  
 
 автор: Slo_Nik   (22.06.2010 в 15:18)   письмо автору
 
   для: Trianon   (22.06.2010 в 15:16)
 

>что значит не получилось?
>Запросы были отвергнуты?

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

p.s. посмотрел в поисковике, нашёл что то похожее

<?php 
mysql_query
("set character_set_client='cp1251'"); 
mysql_query("set character_set_results='cp1251'");
?>

но вот как правильно это использовать, пока не понял

  Ответить  
 
 автор: Trianon   (22.06.2010 в 15:16)   письмо автору
 
   для: Slo_Nik   (22.06.2010 в 15:01)
 

>пытался подключиться к новой таблице через файл, где указана кодировка соединения как utf8 - ни чего не получилось.

что значит не получилось?
Запросы были отвергнуты?

Мануал по 4.1 и выше на русский, насколько я знаю, еще не переведен.
Так что придется дружить.

  Ответить  
 
 автор: Slo_Nik   (22.06.2010 в 15:01)   письмо автору
 
   для: Trianon   (22.06.2010 в 14:33)
 

>Для этого шага Вам потребуется соединение с кодировкой latin1
а разве mysql_query("SET NAMES 'latin1'") не указывает кодировку соединения?

>Теперь мне надо эти данные перенести в другую таблицу, где указано сравнение полей в >utf8_general_ci.
>А для этого шага - потребуется соединение с правильной кодировкой.
пытался подключиться к новой таблице через файл, где указана кодировка соединения как utf8 - ни чего не получилось.

>Кстати, Вы можете отдельно задать кодировку входа и выхода - character set client и character set >results

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

  Ответить  
 
 автор: Trianon   (22.06.2010 в 14:37)   письмо автору
 
   для: sms-send   (22.06.2010 в 14:35)
 

да нет, зря затерли, между прочим.
Может статься, разными словами понятнее будет.

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

  Ответить  
 
 автор: sms-send   (22.06.2010 в 14:35)   письмо автору
 
   для: Slo_Nik   (22.06.2010 в 14:29)
 

~дубль~

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-24] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования