Russian TYPO3 community

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

Дылгеров Ц.В. 25.05.2007 06:45

Цитата:

Сообщение от Podlec (Сообщение 9331)
Простите запутал вас.
как раз вот это я и поставил
$TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8; SET character_set_connection = utf8;';
$TYPO3_CONF_VARS["BE"]["forceCharset"] = 'utf-8';

А установка знчения utf-8 только для переменной forceCharset не спасал положения

Вчера экспериментировал с переносом, восстанавливал то что узнал во время поисков полгода назад. И вот что понял:

Оказывается можно получить видимость нормальной работы в Typo3, а БД будет в два раза больше, то есть в БД будут храниться utf8 байты, закодированные еще раз в utf8 побайтно.

Чтобы проверить правильность и избежать этого, надо посмотреть в phpmyadmin русские буквы - в utf8 должны отображаться правильно. Естественно надо настроить phpmyadmin на просмотр utf8.

Неправильная настройка Typo3 может получиться следующим образом (объясняю как у меня получилось):
- беру дамп со старого сайта в win1251 c DROP-ами
- конвертирую в utf8 командой iconv
- настраиваю сервер в my.cnf на utf8
[mysqld]
default_character_set=utf8
- импортирую дамп
mysql -p -u root
>set names utf8;
>source mydump
в результате я получаю BD двойного размера
В http://forum.typo3.biz/showpost.php?p=6276&postcount=12 я это описал, при просмотре в phpmyadmin неправильные символы счел за верное так как mysql был 3.23, и поэтому ошибочно решил что все правильно

- после того как я получил БД двойного размера со спокойной душой ставлю:
$TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8; SET CHARACTER SET utf8; SET SESSION character_set_server=utf8;';
$TYPO3_CONF_VARS["BE"]["forceCharset"] = 'utf-8';
и все работает отлично! Однако это неверно! Нужно только SET NAMES utf8

---------------------------------------------------------------

поэтому считаю верным следующее

- беру дамп со старого сайта в win1251 c DROP-ами
- конвертирую в utf8 командой iconv
- настраиваю сервер в my.cnf на utf8
[mysqld]
default_character_set=utf8
- импортирую дамп
mysql -p -u root
не использую -----> это неверно: >set names utf8;
>source mydump
в результате я получаю BD нормальную при просмотре в phpmyadmin

в localconf.php:
$TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8;'
$TYPO3_CONF_VARS["BE"]["forceCharset"] = 'utf-8';
здесь не нужно SET CHARACTER SET utf8; SET SESSION character_set_server=utf8;

To Podlec - на всяк случай проверь в phpmyadmin русские буквы нормально выглядят? Хотя с вариантом SET NAMES utf8; SET character_set_connection = utf8; не эксперимнтировал.

Valery Romanchev 25.05.2007 12:08

Цитата:

- беру дамп со старого сайта в win1251 c DROP-ами
- конвертирую в utf8 командой iconv
не в коем случае не советую пользоваться iconv
Я столкнулся с тем, что она режет символы типа многоточий (была конвертация сайта из ISO в utf-8)

для конвертации нужно пользоваться скриптом dumper http://sypex.net/
и выствалять его настройки в коде скрипта

Дылгеров Ц.В. 01.08.2007 06:35

Спасибо за ссылку
 
Цитата:

Сообщение от Valery Romanchev (Сообщение 12352)
не в коем случае не советую пользоваться iconv
Я столкнулся с тем, что она режет символы типа многоточий (была конвертация сайта из ISO в utf-8)

для конвертации нужно пользоваться скриптом dumper http://sypex.net/
и выствалять его настройки в коде скрипта

работает хорошо - пригодилось

Единственное - неправильно переносил спецсимволы, а именно кавычки-скобочками, из koi8r в win1251

Pavel Antonov 01.08.2007 12:50

Подозреваю что дело не в транскодоре, а в отсутствии символов в целевых кодировках.

Stark 09.12.2007 18:56

Помогите с проблемой с utf-8, уже отчаялся...
сайт переезжал на другой хост, где стоит пшп5, apache2.0 myscl 4.1, версия typo3 - 4,04. исходная кодировка сp-1251

Перечитав ветки где упоминаетса даная проблема сделал следующее.
Перед переносом базы поставил в mysql кодировку по умолчанию UTF-8.
в типо 3 прописал
SET NAMES utf8;
SET character_set_connection = utf8;
базу перекодировал, 3 упоминающимися способами (и пшп скриптом и экстеншеном...)
вобщем результат все равно один, одни знаки вопроса!!!
phpmyadmin показывает что вся база даных действительно в utf..

Podlec 09.12.2007 22:18

Цитата:

Сообщение от Stark (Сообщение 16461)
Помогите с проблемой с utf-8, уже отчаялся...
сайт переезжал на другой хост, где стоит пшп5, apache2.0 myscl 4.1, версия typo3 - 4,04. исходная кодировка сp-1251

Перечитав ветки где упоминаетса даная проблема сделал следующее.
Перед переносом базы поставил в mysql кодировку по умолчанию UTF-8.
в типо 3 прописал
SET NAMES utf8;
SET character_set_connection = utf8;
базу перекодировал, 3 упоминающимися способами (и пшп скриптом и экстеншеном...)
вобщем результат все равно один, одни знаки вопроса!!!
phpmyadmin показывает что вся база даных действительно в utf..

[forceCharset] = utf-8
это надо сделать... потом.. сталкивался с такими проблемами... когда переносил базу, которая до этого была в утф8... решал так: перед тем как импортировать БД создаешь чистую базу данных в утф8... т.е. не потом назнаешь созданной БД кодировку.. а сразу.. чтобы она создавалась с дефолтовой Utf8.
Потом импорт БД делал непостредственно при устновке тайпы....
Всё работало...

pomotom 21.12.2007 15:11

проблемы c Ш
 
при некоторых настройках MySQL помогает похоже только вот такая конфигурация:
Код:

SET character_set_client = `utf8`
SET character_set_results = `utf8`
SET collation_connection = `utf8_general_ci`
SET NAMES utf8
SET character_set_connection = `utf8`

спасибо JavaPro

Pavel Antonov 21.12.2007 17:08

Цитата:

Сообщение от pomotom (Сообщение 16666)
при некоторых настройках MySQL помогает похоже только вот такая конфигурация:
Код:

SET character_set_client = `utf8`
SET character_set_results = `utf8`
SET collation_connection = `utf8_general_ci`
SET NAMES utf8
SET character_set_connection = `utf8`

спасибо JavaPro

Важно помнить что при создании нового проекта, "SET NAMES utf8" должна быть установлена до создания таблиц! Если пользуетесь 1-2-3 режимом инсталлятора, таблицы придется пересоздавать. Остальные установки "SET" обычно не требуются.

pomotom 21.12.2007 20:54

Изначально таблицы создавались dumper-ом (force->utf8), но я не мог понять где проблемы. Потом с настройками выше заработало сначала с чистой установкой, а потом и с бекапной базой . Перекодированной из cp1251. Осталось TV поправить.
...
ну вот (смайлик - утирает пот) переход на utf-8 и ПХП5 занял всего сутки :)

Павел, можно немного внимания?
/я очень люблю знать и всегда интересуюсь как (с) Стругацкие /
Подробно про базу:
сначала просто восстановил инсталяцию (4.0), поставил форсеЧарсет и восстановил дампером базу. Как писал выше - везде где видно - утф_генерал_ци. С третьей или четвертой попытки добился того, что в пхпМайАдмин чистый УТФ без потерь контента. В бекенде - бред. (вопросики, то в черных ромбиках,то без). СЕТ НЕЙМС пробовал. Без эффекта.
Сделал чистый инстал (все таблицы при каждой попытке убивались, а не только чистились).
СЕТ НЕЙМС не ставил. Получил на таблицах коллейшн - 1251. Убил. Восстановил базу дампером. Все коллейшн правильные. Обнулил таблицы. Восстанновил чисто содержимое через инстал тул. Получил проблемы с "Ш". Поставил приведенный выше блок кода в ДБ Инит. Получил все старые данные - 1251 отображенные в юникоде. Зато при вводе новых все проблемы исчезли. Восстановил базу. Полет нормальный.
Где ошибся по дороге? Какие шаги лишние?

Pavel Antonov 22.12.2007 02:47

Если все работает - то лишнего ничего нет 8=)

Сказать в чем была проблема сложно.

С дампером у меня обычно все получается в два этапа - сдампить с force->utf8 и загрузить через mysql.


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

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