|
|
|
|
|
для: sms-send
(23.06.2010 в 21:49)
| | >Так и нужно было ставить кодировку клиента cp1251, если данные хранились в этой кодировке
Действительно, это я не подумал... | |
|
|
|
|
|
|
|
для: Slo_Nik
(23.06.2010 в 21:23)
| | > // обработал данные iconv, без этого выдавало ошибку
Так и нужно было ставить кодировку клиента cp1251, если данные хранились в этой кодировке. | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: Trianon
(22.06.2010 в 14:37)
| | OK, учту =)
просто как то неудобно получается. | |
|
|
|
|
|
|
|
для: 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 - кодировка, в которой база возвращает результаты запросов | |
|
|
|
|
|
|
|
для: Trianon
(22.06.2010 в 15:16)
| | >что значит не получилось?
>Запросы были отвергнуты?
запрос был выполнен, но данные в таблицу занесены без изменений, т.е. остались нечитаемы...
для новой таблицы создал отдельную базу, вот и пытался с другой базой соеденить и перенести данные...
p.s. посмотрел в поисковике, нашёл что то похожее
<?php
mysql_query("set character_set_client='cp1251'");
mysql_query("set character_set_results='cp1251'");
?>
|
но вот как правильно это использовать, пока не понял | |
|
|
|
|
|
|
|
для: Slo_Nik
(22.06.2010 в 15:01)
| | >пытался подключиться к новой таблице через файл, где указана кодировка соединения как utf8 - ни чего не получилось.
что значит не получилось?
Запросы были отвергнуты?
Мануал по 4.1 и выше на русский, насколько я знаю, еще не переведен.
Так что придется дружить. | |
|
|
|
|
|
|
|
для: Trianon
(22.06.2010 в 14:33)
| | >Для этого шага Вам потребуется соединение с кодировкой latin1
а разве mysql_query("SET NAMES 'latin1'") не указывает кодировку соединения?
>Теперь мне надо эти данные перенести в другую таблицу, где указано сравнение полей в >utf8_general_ci.
>А для этого шага - потребуется соединение с правильной кодировкой.
пытался подключиться к новой таблице через файл, где указана кодировка соединения как utf8 - ни чего не получилось.
>Кстати, Вы можете отдельно задать кодировку входа и выхода - character set client и character set >results
буду пробовать, вот только с английским не дружу, а на русском нет у меня описания этих функций, если есть где на русском - поделитесь ссылкой, пожалуйста. | |
|
|
|
|
|
|
|
для: sms-send
(22.06.2010 в 14:35)
| | да нет, зря затерли, между прочим.
Может статься, разными словами понятнее будет.
В любом случае, я никогда не против, если ту же мысль еще кто подтвердит. | |
|
|
|
|
|
|
|
для: Slo_Nik
(22.06.2010 в 14:29)
| | ~дубль~ | |
|
|
|
|