Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Локализация проекта (http://forum.typo3.ru/forumdisplay.php?f=14)
-   -   Периодически сама по себе меняется кодировка (http://forum.typo3.ru/showthread.php?t=4038)

void 25.04.2008 13:58

phpmyadmin-ом в базу загляните - там кракозябры или читаемо? Возможно, что из-за отсутствия SET NAMES utf8; с самого начало всё было неправильно и базу недо перекодировать

roman 25.04.2008 14:02

Похоже на то, что у вас данные в базе н в utf-8. Перепроверьте, и, если это так - переконвертируйте или перезалейте базу.

Цитата:

Сообщение от thebat (Сообщение 18657)
И там BE и там FE одинаково...

в FE Ð�овини

в BE еще хуже кодирует Ã�£Ã�ºÑ€Ã�°Ñ—Ã�½ÑÂ�ÑŒÃ�ºÃ�°

Убрал
Код:

#forceCharset = utf-8
#metaCharset = utf-8
#renderCharset = utf-8
#locale_all = uk_UA.UTF-8

...еще хуже стало.

Заметил, что вся кириллица, которая в базе хранится выводиться плохо, а та кириллица, которая в шаблонах прописана, выводится хорошо.


thebat 25.04.2008 15:27

Спасибо ребята за отклик.

Давайте по порядку. Я с начало создал базу, поставил все в utf-8. Потом поставил систему (4.1.5), все настройки поставил в utf-8, сделал сайте. Поставил еще одну площадку для разработки, по той же схеме, что и выше, работало все нормально. Потом вышла новая версия системы, после чего я обновил две системы до версии 4.1.6. Работало все нормально.

Поставил еще одну площадку для разработки (версия 4.1.6) по той же схеме что и предыдущие, работало все нормально.

Потом не из того не из чего началось непонятная, неконтролируемая смена кодировки. То нормально работает, то ненормально, потом вообще все стало выводить в ненормально кодировке.

На сервере стоить пять сайтов, и все они используют одну и туже базу все базы в utf-8 и сайты тоже. Создано пять баз данных все в utf-8 у двух первых пользователи разные, а вот у трех пользователь один и тот же.

Три сайта работают нормально, а вот два не нормально.

Перепроверил все настройщики пяти сайтов, ничего не изменилось все utf-8, но два сайта по-прежнему выводят данные в неправильно кодировке.

Смотрел во внутрь базы все данные, закодированные в utf-8, то есть в базе они нечитаемые (кракозябры).

Что делать, ума не приложу?

roman 25.04.2008 16:33

Последуйте совету void'а. Я думаю, он прав.

thebat 25.04.2008 18:09

Хорошо, а как перекодировать базу в utf-8?

Кое-что прочитал здесь, но здесь говориться только об одной таблице, а нельзя ли такое же сделать для всей базы?

И как узнать в какой кодировке закодированные данные?

Для теста в одной записи контента в заголовке радом с Ð�а віÑ�Ñ‚Ñ€Ñ написал слово «Перевiрка» и сохранил. Иду в базу и смотрю в базе сохранено «Перевiрка - Ð�а віÑ�трѻ… слово «Перевірка» читаемое , а Ð�а віÑ�Ñ‚Ñ€Ñ – не читаемое. Захожу в базу, пишу запрос
Код:

ALTER TABLE tt_content CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
В результате ничего, все как было, так и осталось без изменений.

Но все же вопрос, почему это случилось, ведь база и система настроена в utf-8 за исключением того, что в [setDBinit] не был правильно написан запрос вместо этого
Код:

SET NAMES utf8;
SET CHARACTER SET utf8;
SET SESSION character_set_server = utf8;
SET character_set_connection = utf8;

...было во это
Код:

SET NAMES utf8 SET CHARACTER SET utf8 SET SESSION character_set_server = utf8 SET character_set_connection = utf8;
... и все работало прекрасно.

Теперь непонятно, что делается база в utf-8 настройки системы в utf-8, а вот данные в базе неизвестно в какой кодировке?

Прошу у общества помощи в решении проблемы.

roman 25.04.2008 19:02

Цитата:

Сообщение от thebat (Сообщение 18667)
Хорошо, а как перекодировать базу в utf-8?

Наиболее простой вариант - слить дамп и переконвертировать его в каком-нибудь редакторе и снова залить. Но так как у вас большая база, то часть уже может быть в utf-8, а часть в какой-нибудь друной... Тут нужно аккуратно все проверять.

Цитата:

Сообщение от thebat (Сообщение 18667)
Кое-что прочитал здесь, но здесь говориться только об одной таблице, а нельзя ли такое же сделать для всей базы?

Нет, нельзя. Там же и написано.

Цитата:

Сообщение от thebat (Сообщение 18667)
И как узнать в какой кодировке закодированные данные?

Посмотрите какая кодировка стоит по умолчанию в вашем клиете (phpMyAdmin, MySQL Query Browser, mysql etc.) В этой кодировке вы увидите корректно отображаемые данные. Смените кодировку клиента на utf-8 и увидите какие записи отображаютс как кракозябры - вот это и есть неверная кодировка... Одним словом нужно экспериментировать. Желаю удачи!

Цитата:

Сообщение от thebat (Сообщение 18667)
Для теста в одной записи контента в заголовке радом с Ð�а віÑ�Ñ‚Ñ€Ñ написал слово «Перевiрка» и сохранил. Иду в базу и смотрю в базе сохранено «Перевiрка - Ð�а віÑ�трѻ… слово «Перевірка» читаемое , а Ð�а віÑ�Ñ‚Ñ€Ñ – не читаемое. Захожу в базу, пишу запрос
Код:

ALTER TABLE tt_content CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
В результате ничего, все как было, так и осталось без изменений.


roman 25.04.2008 19:09

http://forum.typo3.biz/showpost.php?...2&postcount=32

thebat 25.04.2008 19:14

Цитата:

Сообщение от roman (Сообщение 18670)
Посмотрите какая кодировка стоит по умолчанию в вашем клиете (phpMyAdmin, MySQL Query Browser, mysql etc.) В этой кодировке вы увидите корректно отображаемые данные. Смените кодировку клиента на utf-8 и увидите какие записи отображаютс как кракозябры - вот это и есть неверная кодировка... Одним словом нужно экспериментировать. Желаю удачи!

MySQL-кодировка: UTF-8 Unicode (utf8)
Сопоставление соединения с MySQL: utf8_general_ci

Насколько я понимаю данные в базе данных закодированные в UTF-8

И что-то натолкнуло меня на мысль, что, что-то эти данные берет из базы и еще раз конвертирует их…, такое может быть?

void 25.04.2008 19:29

Очень, очень советую слить базу на локальный mysql и экспериментировать с перекодировкой именно там. Да, к сожалению, если с самого начала не указать SET NAMES utf8; в setDBinit, то в базе будут кракозябры.

thebat 25.04.2008 22:06

Ребята теперь я понял, что поздно махать руками, надо думать, как это все дело перевести в нормальный читабельный вид.

У меня подозрение, что utf перекодировалось еще раз в utf, то есть произошло двойное кодирование в utf. Может такое быть?

Стоят две задачи:

1. Узнать в какой кодировке, все это дело закодировано или перекодировалось?
2. Чем декодировать всю базу в utf?

Возможно, нужно сделать двоичное декодирование…

Может, кто подскажет, php скрипт, программку или метод как это сделать…?


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

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