Главное меню

FAQ


Войти

Пользователь:

Пароль:


Запомнить

[ Регистрация ]
[ Забыли пароль? ]



Пользователей: 2099
Новичок: nitro55555

максимальный онлайн: 21
(Пользователи: 4, Гости: 17)
17 Окт 2007 15:32

Поиск e107 по-русски

Последняя версия



Последние версии локализации e107

UTF-8:
e107 0.7.16 (release)
e107 0.7.x (svn)
Обновлено: 25.09.2009

Windows-1251:
e107 0.7.16 (release)
e107 0.7.x (svn)
Обновлено: 25.09.2009

e107russian.sourceforge.net
Нашли ошибку или неточность в локализации? Вам cюда

Форумы

e107 по-русски :: Форумы :: Решение проблем :: Проблемы с кодировкой
 
<< Предыдущая тема | Следующая тема >>
Как мы переходили на UTF-8
Переход на страницу       >>  
Модераторы: admin, Sumar, Metaller, yarodin, verant, sova, Predator
Автор Добавил
Metaller
12.08.07 - 15:41



ID пользователя #358
Зарегистрирован: 18.08.04 - 23:26

Сообщений: 3699
Небольшая статья о переводе сайта на кодировку UTF-8 на личном примере.

Для начала, познавательная статья о полезности UTF-8 -ссылка-

Кому лень читать, вкратце резюмирую данную статью - кодировка UTF-8 является универсальной кодировкой, содержащей символы всех языков мира. Эта кодировка может стать тем единственным стандартом, который будет применяться на всех сайтах мира.

Мифы о проблемах, вызываемых этой кодировкой связаны лишь с неправильно настроенным ПО на хостинге. В этом случае остается либо отказаться от этой затеи, либо сменить хостинг, либо принудить хостера настроить ПО для работы с кодировкой UTF-8.

А теперь краткая инструкция.

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

2. Сохраняем полную копию нашей базы данных. Можно воспользоваться для этого утилитой PHPMYADMIN, я же предпочитаю Sypex Dumper Lite ( -ссылка-

3. Сохраняем архив на локальный компьютер, извлекаем из него .sql файл и открываем его любым текстовым редактором, который поддерживает работу в кодировке UTF-8. Я воспользовался EmEditor ( -ссылка-

4. С дампом базы нам надо провести лишь 2 операции. В открытом файле заменить все строки "DEFAULT CHARSET=cp1251" на "DEFAULT CHARSET=utf8", что можно сделать через поиск и замену, и сохранить измененный файл в кодировке UTF-8 (для EmEditor - File - Save As - Encoding UTF-8. . Очень важный момент! Обязательно уберите галочку Add a Unicode Signature (BOM). Это специальные 3 символа, которые добавляются для служебных целей вначале файла и очень частно доставляют множество проблем пользователям UTF-8.

5. Работа над базой данных завершена, можно загружать ее обратно на сервер с помощью PHPMYADMIN или Sypex Dumper Lite, больше с ней ничего делать не нужно.

6. Теперь необходимо изменить кодировку файлов движка. Скачайте из меню "Последние версии локализации e107" локализацию в кодировке UTF-8 (release или cvs) и залейте файлы из архива к себе на сервер, заменяя существующие. Кроме того, необходимо так же изменить кодировку файлов вашей темы и кодировку всех плагинов, которые вы используете и которые не входят в стандартный пакет е107. Строго говоря, перекодировать в UTF-8 нужно только файлы, которые содержат кирилические символы. Это самый кропотливый процесс - скачивайте нужные файлы с вашего сервера, открывайте на своем компьютере в редакторе и пересохраняйте в UTF-8 без BOM, затем закачивайте обратно на сервер.

7. Последний момент - необходимо открыть файл \e107_handlers\mysql_class.php найти function db_Connect и в самом конце этой функции перед последней фигурной скобкой прописать mysql_query("SET CHARACTER SET 'utf8'"); Получится примерно так
                } else {
                    $this->dbError('dbConnect/SelectDB');
                }
            }
        }
        mysql_query("SET CHARACTER SET 'utf8'");
    }

Сохранить файл обратно на сервер. Эта строка говорит mysql серверу использовать для соединения кодировку UTF-8.

Вот и все, этого оказалось достаточно чтобы все заработало как надо. Если в каких то частях сайта вы обнаружите вместо букв знаки вопросов или еще какие-то аномалии, значит скорее всего вы не пересохранили нужные файлы в UTF-8 либо забыли при сохранении убрать галочку сигнатуры BOM.

[ Редактирование 12.08.07 - 15:46 ]
Наверх
offline
12.08.07 - 23:36
Гость

Молодцы! Я предлагаю ещё стереть двиг в cp1251 для большей мотивации перехода на UTF8. Щас у хостеров с поддержкой UTF8 проблем быть не должно, все последние дистрибуты линуха выходят с дефолтовой локалью UTF8. Как обстоит дела в BSD не знаю, но припоминаю что на FreeBSD 6.1 было не UTF.
Наверх
CAM
13.08.07 - 01:47

ID пользователя #3710
Зарегистрирован: 16.02.07 - 20:41

Сообщений: 414
В принципе можно, но пусть будет выбор. По крайней мере в планах verant и yarodin вроде была идея отказа от win-1251, так что надо смотреть.

Надежда - причина всех бед.
Наверх
DarkSpiderB
17.08.07 - 03:14
Йа зубачистка : |=
ID пользователя #4329
Зарегистрирован: 31.07.07 - 01:44

Сообщений: 57
А как быть, если на сайте используется импорт инфы с другого сайта, у них кодировка СР1251, ее каким нибудь образом ожно конвертнуть "на лету" в УТФ?
А то когда сайт на УТФе, импортируемый блок выводится абракадаброй.
Наверх
Metaller
17.08.07 - 10:08



ID пользователя #358
Зарегистрирован: 18.08.04 - 23:26

Сообщений: 3699
Можно использовать обычные функции PHP для перекодировки.
Наверх
DarkSpiderB
18.08.07 - 02:37
Йа зубачистка : |=
ID пользователя #4329
Зарегистрирован: 31.07.07 - 01:44

Сообщений: 57
Т.е. в е107 встроенных функций преобразований нет, понял, спасибо.
Наверх
GoodWIN'st
18.08.07 - 21:24
ID пользователя #4380
Зарегистрирован: 18.08.07 - 21:02

Сообщений: 2
На самом деле в e107 поддержки UTF-8 нет.
Поэтому кому нужно конвертнуть, пишем $text=iconv("windows-1251","UTF-8",$text).
И плюс
Если в каких то частях сайта вы обнаружите вместо букв знаки вопросов или еще какие-то аномалии, значит скорее всего вы не пересохранили нужные файлы в UTF-8 либо забыли при сохранении убрать галочку сигнатуры BOM.
к этому, ищем функции substr, strlen и т.п., и меняем их на mb_substr(,,, CHARSET), mb_strlen(, CHARSET) и т.п.
Все подряд конечно менять не нужно, только где текст UTF-8 проходит (например с плагином календарь можно увидеть проблемы, footer.php и т.д.)



[ Редактирование 18.08.07 - 21:28 ]
Наверх
Metaller
18.08.07 - 21:27



ID пользователя #358
Зарегистрирован: 18.08.04 - 23:26

Сообщений: 3699
Если уж вы предлагаете использовать мультибайтовые функции вместо стандартных, тогда вместо iconv нужно использовать mb_convert_encoding
Наверх
GoodWIN'st
19.08.07 - 01:14
ID пользователя #4380
Зарегистрирован: 18.08.07 - 21:02

Сообщений: 2
То чем конвертнуть входящий поток СР1251 в UTF-8, вобщем то не важно.

Хотел просто обратить внимание, желающих перейти на UTF-8, что в e107 нет поддержки данной кодировки. Т.е. в ряде модулей (нешел ещё в rss трансляциях (rss.php), по нему и приведу пример), обрезка текста происходит просто: substr($value['description'],0,150) .
И что имеем в итоге: от начала текста будет отрезано 150 знаков, но в utf-8 на одну русскую букву уходит два знака, поэтому вместо 150 русских букв, увидим чуть больше половины (если текст целиком на русском), и если скажем два знака русской буквы попадут на 150 и 151 позиции, то ещё и концовка этого текста будет заканчиваться каким нибудь квадратиком, т.к. второго знака не будет.
Если просканить движок на употребление в нем substr, то употребляется данная функция часто. Поэтому кто перейдет на utf-8 будет хоть как иметь проблемы, нужно будет выискивать все места, где substr употребляется данным образом и хакать.
Поэтому кто не особо в PHP, не рекомендую пока переходить на UTF-8, до лучших времен...
Наверх
Metaller
19.08.07 - 18:30



ID пользователя #358
Зарегистрирован: 18.08.04 - 23:26

Сообщений: 3699
Функция substr употребляется конечно часто, но в большинстве случаев она используется для операции над URLами и т.п. некирилическими строками. По пальцам можно пересчитать случаи, когда это действительно доставит проблему.

Конечно можно не переходить и по старинке пользоваться национальной кодировкой, и тогда полноценной поддержки международного стандарта UTF-8 в е107 в ближайшие годы можно не ждать совсем.

UTF-8 это шаг в web 2.0, это шаг к всеобщим стандартам. Используя эту кодировку на своих сайтах и сообщая о возможных проблемах разработчикам можно сделать движок лучше.
Наверх
Igor&
19.08.07 - 19:33
ID пользователя #3893
Зарегистрирован: 31.03.07 - 09:29

Сообщений: 268
Ставил сразу UTF-8, проблема только в отображении месяца в online_extended_menu в теме lamb (тема для галереи). Основная тема e107v4a, в ней время от времени проскакивают непонятные символы в датах, отображение месяца в новостях и плагинах. Но никакой закономерности в появлении аномалий не видно.

http://autodoctor.od.ua
Наверх
Сайт
DarkSpiderB
20.08.07 - 10:39
Йа зубачистка : |=
ID пользователя #4329
Зарегистрирован: 31.07.07 - 01:44

Сообщений: 57
iconv

mb_convert_encoding

А какая из них быстрее, чем предпочтительнее пользоваться?
Наверх
Metaller
20.08.07 - 11:11



ID пользователя #358
Зарегистрирован: 18.08.04 - 23:26

Сообщений: 3699
У меня на хостинге первая не поддерживается, пользуюсь второй, хотя думаю особой разницы между ними нет.
Наверх
lesya
21.08.07 - 12:34
Гость

Спасибо за то что Вы делаете!

[ Редактирование 21.08.07 - 13:33 ]
Наверх
verant
24.08.07 - 05:04

ID пользователя #3742
Зарегистрирован: 24.02.07 - 14:34

Сообщений: 32
GoodWIN'st: substr в rss-трансляциях был исправлен в CVS месяца 2 назад.
По поводу других мест нужно писать в багтрекер e107.

Русская локализация e107: e107russian
Наверх
Мотя
29.08.07 - 22:38
Чяйник

ID пользователя #3597
Зарегистрирован: 20.01.07 - 18:32

Сообщений: 288
7. Последний момент - необходимо открыть файл \e107_handlers\mysql_class.php найти function db_Connect и в самом конце этой функции перед последней фигурной скобкой прописать mysql_query("SET CHARACTER SET 'utf8'");

А нельзя ли просто перезалить необходимые файлы из предварительно скаченного обновленного дистрибутива после переконвертации базы данных?


Бойся человека, у которого нет кошки!
Моя стройка
Наверх
Сайт
Metaller
30.08.07 - 00:22



ID пользователя #358
Зарегистрирован: 18.08.04 - 23:26

Сообщений: 3699
К сожалению, в дистрибутиве нет строки для указания кодировки обмена данными с БД, надеюсь в будущем авторы движка учтут этот момент, пока что это нужно прописывать вручную.
Наверх
icecream_2000
02.09.07 - 23:32

ID пользователя #2917
Зарегистрирован: 07.08.06 - 20:25

Сообщений: 343
Всё конечно хорошо, но не торопите ли вы события ребят ?
Какой смысл переходить на Утфоскую кодировку ???
Более чем половина русскоязычных сайтов строются на национальной кодировке и думаю не спроста ...
И потом, если глубоко вдуматься, международный стандарт кодировки UTF 8 если и будет использоваться по всему миру, то это какие же должны произойти события ???
Зачем вам такие заморочки уважаемый Metaller ?
Давайте поддерживать национальную кодировку, ведь всё так хорошо шло все эти годы и проблем никаких не создавалось...
Мне как обычному пользователю гораздо удобней использовать win-1251 да и не только мне я думаю ...
Мы по большей части сидим в нете в зане ru или эвропейской части и нафига нам какой-то UTF-8 ?
Смысл перехода мне не понятен ... :)
Наверх
Metaller
03.09.07 - 00:33



ID пользователя #358
Зарегистрирован: 18.08.04 - 23:26

Сообщений: 3699
icecream_2000: А смысл прогресса вообще? Зачем нам PHP, если и на обычном HTMLe сайты неплохо работают, а говорят еще и роботами индексируются лучше, зачем нам MySQL, если в текстовых файлах данные хранить проще? Кто придумал AJAX, все и без него работает?

Я предлагаю участвовать в прогрессе, ты же хочешь всего лишь пользоваться его плодами. В этом и вся разница.

[ Редактирование 03.09.07 - 00:33 ]
Наверх
Salomon
04.09.07 - 22:31
ID пользователя #919
Зарегистрирован: 07.02.05 - 03:10

Сообщений: 95
За 10 часов перевёл сайт на УТФ-8. Доволен. :)
Спасибо за мануал!

Все про Боба Марли по-русски
Лучшая pbem-игра
Наверх
Сайт
Переход на страницу       >>   

Перейти:     Наверх

Транслировать сообщения этой темы: rss 0.92 Транслировать сообщения этой темы: rss 2.0 Транслировать сообщения этой темы: RDF
Powered by e107 Forum System