PDA

Просмотр полной версии : проблемы с русским текстом после переноса сайта


demav
25.05.2006, 14:50
Использую кодировку UTF8. В [BE][forceCharset] стоит utf-8
Сам BE нормально показывает на русском.

На локальном компьютере FE отображается нормально - на русском.

Если смотреть в phpMyAdmin - в полях с русским - кракозяблы (с умляутами).

Теперь переношу сайт на FreeBSD (данные переношу через дамп, созданный phpMyAdmin'ом).
Получаю - BE на русском, FE - данные вопросительными знаками. Причем, то, что в самом шаблоне сделано в UTF-8 - нормально отображается. В BE также вопросительными знаками видны русские названия страниц.
Очевидно, проблема в формате данных в БД.


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

Что делал.

1)
Пробовал в localconf.php писать.

$TYPO3_CONF_VARS['SYS']['setDBinit'] = "SET NAMES 'utf8'".chr(10)."SET CHARACTER SET 'utf8'";

(после этого вместо вопросительных знаков появляются те же символы, что и в phpMyAdmin с умляутами, но все равно не на русском)

2)

в htaccess пробовал такие настройки; включал и выключал их - все одно.

PHP_VALUE mbstring.detect_order UTF-8
PHP_VALUE mbstring.func_overload 2
#CharsetDisable Off
CharsetSourceEnc UTF-8

Правда, сервер валится при CharsetDisable или CharsetTurnOff - с этим не удалось попробовать. Возможно, хостер не дружит с этим...


Куда еще копать, ПОДСКАЖИТЕЕЕЕ!!!

Valery Romanchev
25.05.2006, 15:37
какие версии MySQL в обих случаях?
(надо 4.1 или выше)

Если смотреть в phpMyAdmin - в полях с русским - кракозяблы (с умляутами).
базу надо будет конвертировать.
1) сначала в дампе исправить все latin1 -> utf8
2) потом поверх дампа залить t3d сделанный из сайта
(более простой способ пока не нашел)

demav
25.05.2006, 15:42
Версия 4.1.14 for Win32

А вот что выдает на никсах:

mysql Ver 14.12 Distrib 5.0.19, for portbld-freebsd5.4 (i386) using 4.3
Т.е., видимо, 5-я версия

demav
25.05.2006, 15:49
1) сначала в дампе исправить все latin1 -> utf8
(более простой способ пока не нашел)
а вот это как сделать? попробую в текстовом редакторе "Сохранить как...", но есть ли более красивые способы?

Valery Romanchev
25.05.2006, 17:03
а вот это как сделать? попробую в текстовом редакторе "Сохранить как...", но есть ли более красивые способы?
нет.. я имею ввиду в FAR просто заменить слово latin1 на utf8
только сначала ...general_ci и general_cs не забыть поменять.

demav
25.05.2006, 18:08
нет.. я имею ввиду в FAR просто заменить слово latin1 на utf8
только сначала ...general_ci и general_cs не забыть поменять.

Хм, однако, нет latin1 нигде в тексте. Там только инсерты... А drop / create table не делается.

Может опишете как вы переносите сайты?

Comrade
25.05.2006, 18:13
Проблема повидимому в том как вы делаете дамп. Важно проконтролировать кодировку соединения с MySql на виндовом сервере.

demav
25.05.2006, 18:22
Проблема повидимому в том как вы делаете дамп. Важно проконтролировать кодировку соединения с MySql на виндовом сервере.
А расскажите как надо :)
Формат результирующего файла получается UTF-8.
Пробовал ставить при экспорте "MYSQL 40 compability" или "Использовать шестнадцатиричные (hexadecimal) бинарные" - не помогает.

Вообще, пользовался phpMyAdmin для переноса тысячу и один раз, все было нормально на windows1251. А вот UTF8 меня прямо подкосило :)

Не оставьте в беде :)

demav
26.05.2006, 11:40
Похоже, проблема была с кодировками таблиц на удаленном сервере
Убил базу на хостере (юникс), заново создал ее. Перенес через T3D - все ок, даже в PhpAdmin на русском стало :)

Но возникла ошибка - в FE если сбросить кэш, то все нормально отображается, а если выводятся кэшированные данные, то страница вообще не показывается и сильная ругань )

Обнаружил строку в localconf.php (которую раньше вставлял): $TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8'.chr(10).'SET CHARACTER SET utf8';
Убрал ее. Тогда опять кодировка слетела.

Пришлось еще раз через T3D перенести - теперь все ок. Правда, в PhpMyAdmin опять кракозяблы, но это уже как родное :)