Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   FAQ (Часто задаваемые вопросы) (http://forum.typo3.ru/forumdisplay.php?f=26)
-   -   Как конвертировать кодировку таблицы MySQL (http://forum.typo3.ru/showthread.php?t=5720)

Pavel Antonov 12.01.2008 15:42

Как конвертировать кодировку таблицы MySQL
 
Можно обойтись без услуг "dumper".

Быстро конвертировать кодировку можно SQL запросом:
Код:

ALTER TABLE tt_content CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

void 12.01.2008 18:49

Кстати, обидно, что результат SHOW TABLES нельзя использовать для конвертирования всех таблиц...

Valery Romanchev 21.07.2008 00:53

напишу здесь, как конвертировать с dumper
Исходная ситуация - все таблицы с дефолтовым коллашном (который соответствует latin1).
Так бывает, когда не выставили в начале кодировку utf

Ситуации бывают и другие - так что за могут потребовать эксперименты.


Что делаем
0) делаем бэкап
1) ставим экст sfdbutf8 и меняем коллашн у всех таблиц и полей на utf8_general_ci
2) скачиваем dumper http://sypex.net/products/dumper/downloads/
и используем настройки


PHP код:

// Кодировка соединения с MySQL
// auto - автоматический выбор (устанавливается кодировка таблицы), cp1251 - windows-1251, и т.п.

//define('CHARSET', 'auto');
define('CHARSET''latin1');


// Кодировка соединения с MySQL при восстановлении
// На случай переноса со старых версий MySQL (до 4.1), у которых не указана кодировка таблиц в дампе
// При добавлении 'forced->', к примеру 'forced->cp1251', кодировка таблиц при восстановлении будет принудительно заменена на cp1251
// Можно также указывать сравнение нужное к примеру 'cp1251_ukrainian_ci' или 'forced->cp1251_ukrainian_ci'
//define('RESTORE_CHARSET', 'cp1251');
define('RESTORE_CHARSET''utf8'); 

и дампим, а потом закачивае базу

I am Phantom 10.11.2009 04:41

Valery Romanchev, как-то у Вас сложно все! Вы же сами упомянули прекрасный инструмент дампер! Тут же коммент говорящий :)
Цитата:

// При добавлении 'forced->', к примеру 'forced->cp1251', кодировка таблиц при восстановлении будет принудительно заменена на cp1251
1. Бякап дампером (строка define('CHARSET', 'auto'); справляется прекрасно)
2. пишем строку define('RESTORE_CHARSET', 'forced->utf8');
3. прямо в этом же окне, где выполняли только что бякап, разворачиваем базу обратно

Вуаля! Улыбаемся и машем!:)

ukrsonic 29.12.2009 04:30

Для особо ленивых кто любит phpMyAdmin

1. отмечаем все таблицы в вашей базе, выбираем действие "Анализ таблицы"
2. Из окошка SQL запросов, копируем список имен всех таблиц, каждое имя таблицы будет отделено так ( `имя_таблицы`, )
3. кидаем список в редактор и задаем поиск с заменой
вначале меняем ( `, ) на ( CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; )
затем заменяем просто ( ` ) на ( ALTER TABLE )
4. получаем вот такой готовый списочек SQL запросов
PHP код:

ALTER TABLE be_groups CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE be_sessions CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE be_users CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE cache_extensions CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE cache_hash CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE cache_imagesizes CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE cache_md5params CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE cache_pages CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE cache_pagesection CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE cache_treelist CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE cache_typo3temp_log CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE cachingframework_cache_hash CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE cachingframework_cache_hash_tags CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE cachingframework_cache_pages CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE cachingframework_cache_pagesection CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE cachingframework_cache_pagesection_tags CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE cachingframework_cache_pages_tags CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE fe_groups CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE fe_sessions CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE fe_session_data CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE fe_users CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE pages CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE pages_language_overlay CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE static_template CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE static_tsconfig_help CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE sys_be_shortcuts CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE sys_domain CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE sys_filemounts CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE sys_history CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE sys_language CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE sys_lockedrecords CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE sys_log CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE sys_note CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE sys_preview CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE sys_refindex CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE sys_refindex_rel CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE sys_refindex_res CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE sys_refindex_words CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE sys_registry CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE sys_template CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE sys_workspace CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tt_content CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tx_impexp_presets CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tx_rtehtmlarea_acronym CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci

5. бросаем список в окно SQL запроса

УсЁ!

Manas 31.12.2009 22:27

Есть еще экст. sfdbutf8 http://typo3.org/extensions/reposito...butf8/current/ быстро и удобно.

андрюха 23.03.2010 19:28

Цитата:

Сообщение от ukrsonic (Сообщение 26647)
5. бросаем список в окно SQL запроса

УсЁ!

Гениально! Спасибо!

андрюха 23.03.2010 19:38

Цитата:

Сообщение от Manas (Сообщение 26669)
Есть еще экст. sfdbutf8 http://typo3.org/extensions/reposito...butf8/current/ быстро и удобно.

тоже хорошо! только теперь запутался по поводу разницы между utf8_general_ci и utf8_unicode_ci :confused:

Manas 24.03.2010 01:03

utf8_unicode_ci поддерживает более широкое пространство символов, т.е. если вы используете немецкие умуляты или китайский язык - нужно использовать utf8_unicode_ci. Если только рус./англ. языки - достаточно utf8_general_ci т.к. работает быстрее.

Valery Romanchev 24.03.2010 12:12

Цитата:

Сообщение от Manas (Сообщение 27475)
utf8_unicode_ci поддерживает более широкое пространство символов, т.е. если вы используете немецкие умуляты или китайский язык - нужно использовать utf8_unicode_ci. Если только рус./англ. языки - достаточно utf8_general_ci т.к. работает быстрее.

не совсем так, все символы поддерживаются и там и там, разница в работе сравнения:

Цитата:

The most significant feature in utf8_unicode_ci is that it supports expansions; that is, when one character compares as equal to combinations of other characters. For example, in German and some other languages ‘ß’ is equal to ‘ss’.
utf8_general_ci is a legacy collation that does not support expansions. It can make only one-to-one comparisons between characters. This means that comparisons for the utf8_general_ci collation are faster, but slightly less correct, than comparisons for utf8_unicode_ci.
так что если expansions не интересуют - то utf8_general_ci


Часовой пояс GMT +4, время: 21:16.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot