Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Обсуждение общих технических вопросов > FAQ (Часто задаваемые вопросы)

Ответ
 
Опции темы Опции просмотра
Старый 22.05.2006, 15:08   #1
Valery Romanchev
Administrator
 
Аватар для Valery Romanchev
 
Регистрация: 23.08.2003
Адрес: Moscow, Russia
Сообщений: 1,926
Отправить сообщение для Valery Romanchev с помощью Skype™
По умолчанию Правильная настройка базы MySQL 4.1 и TYPO3 4.0

За несколько часов поисков и экспериментов узнал много интересного на тему collation в MySQL
:-)

http://drupal.htdogs.ru/node/111
http://bugs.typo3.org/view.php?id=1262

Рецепт того как добиться регистронезависимого поиска и сортировки с русскими буквами, когда в TYPO3 forcecharset utf-8 и MySQL 4.1

базу создаем в utf-8 ( collation utf8_general_ci при этом дефолтовая кодировка сервера может быть любая - у меня latin)

Пишем в localconf.php
$TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8'.chr(10).'SET CHARACTER SET utf8';

Кстати, Битрикс не поддерживает utf-8 и это не планируется.
__________________
Веб-студия ТТЛАБ
www.ttlab.ru
Valery Romanchev вне форума   Ответить с цитированием
Старый 27.05.2006, 23:35   #2
Valery Romanchev
Administrator
 
Аватар для Valery Romanchev
 
Регистрация: 23.08.2003
Адрес: Moscow, Russia
Сообщений: 1,926
Отправить сообщение для Valery Romanchev с помощью Skype™
По умолчанию

доп инф.
http://bugs.typo3.org/view.php?id=3547

последний вариант который я пробую
$TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8;';

см. http://dev.mysql.com/doc/refman/5.0/...onnection.html

поставить
$TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET character_set_connection = utf8;';
недостаточно - в этом случае на update через раз слетает кодировка

__________________
Веб-студия ТТЛАБ
www.ttlab.ru

Последний раз редактировалось Valery Romanchev; 28.05.2006 в 19:25
Valery Romanchev вне форума   Ответить с цитированием
Старый 29.05.2006, 12:39   #3
Valery Romanchev
Administrator
 
Аватар для Valery Romanchev
 
Регистрация: 23.08.2003
Адрес: Moscow, Russia
Сообщений: 1,926
Отправить сообщение для Valery Romanchev с помощью Skype™
По умолчанию

итак, стоит
$TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8;';
и пока полет нормальный
__________________
Веб-студия ТТЛАБ
www.ttlab.ru
Valery Romanchev вне форума   Ответить с цитированием
Старый 08.06.2006, 04:27   #4
relax..
Продвинутый
 
Регистрация: 10.12.2005
Адрес: Kyiv
Сообщений: 36
По умолчанию

спасибо за информацию.
relax.. вне форума   Ответить с цитированием
Старый 08.06.2006, 17:30   #5
demav
Senior Member
 
Аватар для demav
 
Регистрация: 21.04.2006
Сообщений: 245
По умолчанию

Если кому-то поможет...

Чтобы корректно работал ORDER BY и поиск по LIKE в UTF-8 я сделал так:

1) удалил все таблицы в БД typo и создал их заново. Важно, чтобы таблицы создавались в DEFAULT CHARSET=utf8;

PhpMyAdmin генерит скрипт на создание таблицы с latin1 вместо utf8, поэтому надо заменить. А если создавать базу через инсталлятор typo3, то умолчательный collation там стоит latin1_swedish_ci. Так что, похоже, без ручной модификации не обойтись.

2) поставил в localconf.php строку SET NAMES (см. выше)

3) со старого сайта сделал экспорт в .T3D и на новом сделал импорт из .T3D - все заработало

Последний раз редактировалось demav; 09.06.2006 в 00:31
demav вне форума   Ответить с цитированием
Старый 09.06.2006, 11:22   #6
Дылгеров Ц.В.
Senior Member
 
Регистрация: 14.11.2005
Адрес: Улан-Удэ
Сообщений: 158
Отправить сообщение для Дылгеров Ц.В. с помощью ICQ
По умолчанию

Возможно ли в одной БД (дереве) иметь два сайта - первый на windows-1251, второй на utf-8?

При том необходимо чтобы charset соблюдался и в BE - редактировать то сайт нужно в той же кодировке? То есть переключение BE charset-а должно происходить в зависимости от того в какой ветке?

Последний раз редактировалось Дылгеров Ц.В.; 09.06.2006 в 11:28
Дылгеров Ц.В. вне форума   Ответить с цитированием
Старый 09.06.2006, 15:21   #7
Comrade
Продвинутый
 
Регистрация: 20.06.2005
Адрес: Abakan
Сообщений: 30
Отправить сообщение для Comrade с помощью ICQ
По умолчанию

Цитата:
Сообщение от Дылгеров Ц.В.
Возможно ли в одной БД (дереве) иметь два сайта - первый на windows-1251, второй на utf-8?

При том необходимо чтобы charset соблюдался и в BE - редактировать то сайт нужно в той же кодировке? То есть переключение BE charset-а должно происходить в зависимости от того в какой ветке?
Нет, так сделать не получится. Ведь все страницы, не зависимо от ветки где они находятся, хранятся в одной таблице бд, кодирвка которой может быть или utf8 или win1251.
Comrade вне форума   Ответить с цитированием
Старый 09.06.2006, 17:38   #8
Valery Romanchev
Administrator
 
Аватар для Valery Romanchev
 
Регистрация: 23.08.2003
Адрес: Moscow, Russia
Сообщений: 1,926
Отправить сообщение для Valery Romanchev с помощью Skype™
По умолчанию

Цитата:
Возможно ли в одной БД (дереве) иметь два сайта - первый на windows-1251, второй на utf-8?
да, но при этом не будет нормально работать Index Search
Как это делать описано в доке по локализации.
Frontend Localization Guide
(свежая дока кстати)
http://typo3.org/documentation/docum...guide/current/


Цитата:
При том необходимо чтобы charset соблюдался и в BE - редактировать то сайт нужно в той же кодировке? То есть переключение BE charset-а должно происходить в зависимости от того в какой ветке?
В BE - будет один и тот же charset
(в базу все будет идти в utf8, юзер у которого руссий язык - будет в BE работать в windows 1251 - с этим подробно разбирался Павел Антонов - он вроде даже патч делал на эту тему... чтобы все-таки все было в utf8)
А для вывода в FE - для разных деревьев можно проставить разные кодировки - на лету идет конвертация
__________________
Веб-студия ТТЛАБ
www.ttlab.ru

Последний раз редактировалось Valery Romanchev; 09.06.2006 в 17:41
Valery Romanchev вне форума   Ответить с цитированием
Старый 28.06.2006, 07:33   #9
Дылгеров Ц.В.
Senior Member
 
Регистрация: 14.11.2005
Адрес: Улан-Удэ
Сообщений: 158
Отправить сообщение для Дылгеров Ц.В. с помощью ICQ
По умолчанию

Переношу БД в utf-8.
БД конвертируется хорошо. Так как default character set установлен в UTF-8, то при импорте дампа таблицы создаются с charset utf-8 и collation utf_general_ci. Сам дамп конвертирую такой программой

Цитата:
<?php

$handle = fopen("olddump.sql","r");
$newhandle = fopen("olddump.sql.utf-8","w");
$contents = '';
while (!feof($handle)) {
$contents = fread($handle, 8192);
$contents = iconv("WINDOWS-1251","UTF-8",$contents);
// $contents = convert_cyr_string(); - здесь кажется нет utf-8
// $contents = mb_convert_encoding($contents,"UTF-8","WINDOWS-1251");
fwrite($newhandle,$contents);
}
fclose($handle);
fclose($newhandle);

?>
Проблема такая - в таблице pages поле title имеет тип tinytext, то есть 256 символов. При конвертации если текст в поле title превышает некоторое значение (так и непонял какое - 128??) - выходит ошибка:
C:\Program Files\MySQL\MySQL Server 5.0\bin>mysql -p -u root mynewdbinutf8 < olddump.sql.utf-8
Enter password: ****************************************
ERROR 1406 (22001) at line 1: Data too long for column 'title' at row 1

вызвано это тем что при конвертации из windows-1251 в utf-8 title длиной 163 превратился в 307 - а это уже больше чем tinytext

Что посоветуете? Или я что то неправильно делал?

Может в команде mysql -p -u root mynewdbinutf8 < olddump.sql.utf-8 добавить default-charset=windows-1251 и не конвертировать дамп?

Последний раз редактировалось Дылгеров Ц.В.; 05.09.2006 в 05:29
Дылгеров Ц.В. вне форума   Ответить с цитированием
Старый 28.06.2006, 11:40   #10
Valery Romanchev
Administrator
 
Аватар для Valery Romanchev
 
Регистрация: 23.08.2003
Адрес: Moscow, Russia
Сообщений: 1,926
Отправить сообщение для Valery Romanchev с помощью Skype™
По умолчанию

я конвертировал из windows-1251 в uft8 с помощью экстеншена. Их там 2, использовал тот, который Андрей Шварцкопф делал.
__________________
Веб-студия ТТЛАБ
www.ttlab.ru
Valery Romanchev вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


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


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

Хостинг и техническая поддержка: TYPO3 Лаборатория