HOWTO: Как решить проблему ломаной кодировки

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

Sonya

HOWTO: Как решить проблему ломаной кодировки

Post by Sonya »

1. База данных должна с самого начала создаваться в utf-8. То есть, недостаточно просто создать базу данных, но обязательно ПЕРЕД импортом, когда там еще нет ни одной таблицы, поменять сравнение базы данных на utf8_general_ci. Это можно сделать в PHPMyAdmin в закладке Операции или выполнив команду SQL в консоле или в поле SQL в PHPMyAdmin:

Code: Select all

ALTER DATABASE `database_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
Этот момент часто упускается и с самого начала все встает криво. Выполнение этой команды пост-фактум, когда все уже лежит в базе НИЧЕГО НЕ ДАСТ! В CMS Made Simple, начиная с версий 1.6 эта команда выполняется при установке. Но я советую выполнить ее вручную, если по какой-то причине (отсутствие прав?) эта команда не выполнится при установке.

2. Перед тем, как импортировать базу данных, открываем дамп в тесктовом редакторе и проверяем его на отсутствие кракозябр. Если кракозябры в нем присутсвуют, то импортировать такой файл без изменений ничего не даст, импорт его не вылечит! Кракозябры в дампе возникают либо, если база с самого начала криво была настроена, либо экспорт был выполнен некорректно. Как вылечить кракозябры в дампе? Созданием здорового дампа без кракозябр или заменой кракозябр на соответствующие буквы. Я заменяю простым редактором, в котором можно сделать поиск и замену в тексте. Ищем кракозябру, заменяем на букву.

2a. Независимо от наличия или отстуствия кракозябр, заменяем все

Code: Select all

DEFAULT CHARSET=!!ДРУГАЯ КОДИРОВКА!!;
на

Code: Select all

DEFAULT CHARSET=utf8;
Под !!ДРУГАЯ КОДИРОВКА!! может быть latin1 или сp1252 или .... Используем для этого текстовой редактор. Ищем !!ДРУГАЯ КОДИРОВКА!! также по отдельности, и везде заменяем на utf8.

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

4. При импорте базы данных через PHPMyAdmin выбираем соотвествующую кодировку файла в поле. Гаданием НЕ занимаемся, берем то, что было задано в шаге 3. Если не знаем, в какой кодировке файл был сохранен, то возращаемся к шагу 3 и учимся сохранять файлы в нужной кодировке.

5. После импорта проверяем, чтобы все таблицы, и все текстовые поля в базе имели сравнение utf8_general_ci (колонка сравнение в PHPMyAdmin). Если это не так, то возращаемся к шагу 1 и шагу 2а.

5а. Открываем любую таблицу с текстом и проверяем на наличие кракозябр. Если их НЕ было в дампе, то возращаемся к шагу 3. Если они были в дампе, то возращаемся к шагу 2.

6. Соединение с базой данных должно идти в utf8. Соединение не имеет никакого отношения к сравнению таблиц (колонка сравнение в PHPMyAdmin). Соединение может быть в UTF8, а таблицы в latin-swedish и наоборот. По умолчанию, при установке MySQL на сервере выставляется соединение latin-swedisch и если хостер тупой, то он это значение не изменяет и каждый клиент на сервере начинает биться с кодировками. В CMS Made Simple эта проблема решается выставлением

Code: Select all

#This is a mysql specific option that is generally defaulted to true.  Only
#disable this for backwards compatibility or the use of non utf-8 databases.
$config['set_names'] = true;
в файле config.php.

7. Во всех HTML шаблонах должно стоять.

Code: Select all

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8. Если кракозябры отображаются только в заголовках новостей, то нужно открыть шаблон для новостей, найти все

Code: Select all

{$entry->title|escape:'html'}
и заменить на

Code: Select all

{$entry->title|escape:'html':'utf-8'}
9. После замены кодировок и нового импорта ВСЕГДА очищаем кэш CMSMS.
Администрирование сайта » Общие настройки, закладка Дополнительные настройки. Кнопка "Очистить кэш".
................................................................................................

Написано для тех, кто хочет понять, почему нет однозначного решения для "ломаной кодировки". Проблема может возникнуть на любом этапе!
...............................................................................................
Вылечился сам - помоги вылечиться другим! Дописываем сюда важные моменты, которые я возможно не учла.
Last edited by Sonya on Sun Nov 01, 2009 3:42 pm, edited 1 time in total.
ilia3d

Re: HOWTO: Как решить проблему ломаной кодировки

Post by ilia3d »

Спасибо! Ну просто краткий курс молодого перекодировщика )

небольшой вопрос-уточнение, по п.6 о тупых хостерах:

В phpMyAdmin можно посмотреть переменные установки mySQL и я там обнаружил следующие строчки:
(Global value)  latin1_swedish_ci
collation database latin1_swedish_ci
collation server latin1_swedish_ci

вот именно это у нормальных хостеров должно быть в UTF? Если да, то все мои хостеры - тупые... :(
Sonya

Re: HOWTO: Как решить проблему ломаной кодировки

Post by Sonya »

ilia3d wrote: Если да, то все мои хостеры - тупые... :(
Если знаешь врага  в лицо, тогда бороться с ним очень легко :)
ilia3d

Re: HOWTO: Как решить проблему ломаной кодировки

Post by ilia3d »

Sonya wrote:
ilia3d wrote: Если да, то все мои хостеры - тупые... :(
Если знаешь врага  в лицо, тогда бороться с ним очень легко :)
еще бы дотянуться до этого лица )
User avatar
Robur
Forum Members
Forum Members
Posts: 86
Joined: Wed Mar 11, 2009 10:41 am
Location: Russia, Kazan

Re: HOWTO: Как решить проблему ломаной кодировки

Post by Robur »

2 Sonya :

Есть немного другая задача, нежели перенос базы... Скажем так был домен http://ubuntu.matrosov.info с собственным веб-сервером (на хостинге могу поднять до 10 www серверов). Понадобился срочно освободить веб сервер. Решил сделать просто и неказисто, домен http://ubuntu.matrosov.info оставить, перенаправить его как алиас на http://matrosov.info/ubuntu/.... Для этого в домене matrosov.info создал папочку ubuntu, поставил в неё симпл, при установке указал существующую базу (без создания таблиц, дабы не убить уже существующие данные). Теперь - и конфиги одинаковы и всё остальное.... И ведь даже база данных одна на оба адреса в данный момент!!!! То есть если зайти на ubuntu.matrosov.info и на matrosov.info/ubuntu/ движки разные работают, но база данных указана одна и таже.

Пока что www под ubuntu.matrosov.info не убит. Но если проблему решу, останется www сервер для домена matrosov.info, а сервак для ubuntu.matrosov.info убью, сделаю адрес алиасом и будет мне счастье.... Есть умные мысли, в которые можете меня ткнуть мордой лица? Был бы безумно благодарен...

П.С. для сайтов в доменах matrosov.info и ubuntu.matrosov.info изначально была создана одна единая база, НО, таблицы для одного сайта миеют один префикс, для второго другой... И кстати... К этому же вопросу, если я вдруг захочу поднять некий сателлит на другом хостинге, но в качестве базы указать реально существующую рабочую базу??? Будет то же самое я так понимаю?
User avatar
Robur
Forum Members
Forum Members
Posts: 86
Joined: Wed Mar 11, 2009 10:41 am
Location: Russia, Kazan

Re: HOWTO: Как решить проблему ломаной кодировки

Post by Robur »

Проблему решил, но вопрос по сути дела не снят с повестки. Решил как всегда методом ненаучного тыка и приёмом лома, а именно скопировал ПОЛНОСТЬЮ все файлы CMS Made Simple из каталога рабочего нормально сайта в каталог вновь созданного. Кодировка махом поправилась. НО. до этого действа привёл в соответствие файлы config.php, а так же в файле modifier.escape.php... Если на будущее знать какой файл ещё подправить.... В самой системе указал конечно же utf-8, Russian и прочее.... Но до метода лома это не помогло...
Sonya

Re: HOWTO: Как решить проблему ломаной кодировки

Post by Sonya »

Robur wrote: а так же в файле modifier.escape.php...
Этот файл править не нужно, чтобы не плакать горькими слезами после очередного апдейта и опять все "починять" ручками. Добавила вверху пункт 8, как исправить кракозябры в заголовках прямо из шаблона.
tetti
New Member
New Member
Posts: 4
Joined: Tue Nov 03, 2009 6:52 pm

Re: HOWTO: Как решить проблему ломаной кодировки

Post by tetti »

SOS!!!ПОЖАЛУЙСТА-ПОМОГИТЕ!!! Я -хозяйка сайта питомника http://gilead-sennenhund.com. Неделю назад при работе  изменилась картина-заходя через админ на страницы вид не как на сайте-а только цифры и значки. Я не могу загрузить фото (нет меню с деревом...) Подскажите-как ВЕРНУТЬ обычный вид!!! Щенки растут-а инфу загрузить не могу и фото вставить тоже :( :'( :'( :'(
Sonya

Re: HOWTO: Как решить проблему ломаной кодировки

Post by Sonya »

tetti wrote: SOS!!!ПОЖАЛУЙСТА-ПОМОГИТЕ!!! Я -хозяйка сайта питомника http://gilead-sennenhund.com. Неделю назад при работе  изменилась картина-заходя через админ на страницы вид не как на сайте-а только цифры и значки. Я не могу загрузить фото (нет меню с деревом...) Подскажите-как ВЕРНУТЬ обычный вид!!! Щенки растут-а инфу загрузить не могу и фото вставить тоже :( :'( :'( :'(
Просто так ничего не ломается, значит где-то что-то изменилось неделю назад. Без конкректной информации никто не поможет.
Какая версия CMSMS?
Какие настройки на сервере?
Что значит "нет меню с деревом"? Где его нет?
Ясновидящих на форуме нет.
tetti
New Member
New Member
Posts: 4
Joined: Tue Nov 03, 2009 6:52 pm

Re: HOWTO: Как решить проблему ломаной кодировки

Post by tetti »

:-[ :-[ :-[
Мне необходимо разобраться, т.к. в ближайшем окружении спецов НЕТ!!!
CMS Made Simple 1.2 "Barbados"
CMS Made Simple is free software released under the General Public Licence.-надеюсь, это версия СMS :-\
Настройки сервера...где их искать?...
Раньше, открывая страницу над окошком была строка-меннюшка (шрифт.курсив,...дерево...)  Ну как сейчас, когда я Вам пишу. Нажав на это дерево я могла загрузить фото ( которое предварительно загружала на сайт). Сейчас над окошком ничего нет.  :'( :'( :'(
Sonya

Re: HOWTO: Как решить проблему ломаной кодировки

Post by Sonya »

tetti wrote: Раньше, открывая страницу над окошком была строка-меннюшка (шрифт.курсив,...дерево...)  Ну как сейчас, когда я Вам пишу. Нажав на это дерево я могла загрузить фото ( которое предварительно загружала на сайт). Сейчас над окошком ничего нет.  :'( :'( :'(
1. В админке нажать в меню на Расширения и выбрать TinyMCE Визуальный редактор.
2. Выбрать закладку "Дополнительно"
3. Найти кнопку "Сбросить все настройки к значениям по умолчанию" и нажать на нее.

Так в актуальной версии, как это в 1.2 было я уже не помню....
tetti
New Member
New Member
Posts: 4
Joined: Tue Nov 03, 2009 6:52 pm

Re: HOWTO: Как решить проблему ломаной кодировки

Post by tetti »

TinyMCE WYSIWYG BasicПомощь Помощь | Помощь Помощь сообщества (новое окно)
Settings
Toolbar
CSS Styles
Powered by TinyMCE
Allow table operations :
Strip Background Tags From CSS :
Width of editor field : Auto or
Height of editor field : Auto or
Apply source formatting to the output HTML :
Show checkbox to turn wysiwyg on/off :
Only allow XHTML-compliant elements :
Newline-style :
Encoding of entities :
Show the path of the element at the bottom of the editor. :
Enable thumbnail previews in the image browser.
(Note: You may have to set file creation mask to 002 (instead of the default 022)
to get the thumbnails working (do this in Site Admin -> Global Settings). :
leave BLANK or set DEFAULT for use PAGE CSS. Note: To make editor background color white put the following in the blank: background-color:white;
Body tag CSS :
Blockformats in dropdown-menu :
Понимаю, что Вас отвлекаю, но...не нашла я в визуальном редакторе ни "дополнительно", ни "сброс настроек".
Пробовала методом "подбора" тоже ничего не вышло

Sonya

Re: HOWTO: Как решить проблему ломаной кодировки

Post by Sonya »

tetti wrote:
Понимаю, что Вас отвлекаю, но...не нашла я в визуальном редакторе ни "дополнительно", ни "сброс настроек".
Пробовала методом "подбора" тоже ничего не вышло

Откройте новую тему в форуме с заголовком Проблема с TinyMCE (CMSMS 1.2), спросите, как сбросить там настройки, может у кого-то еще эта древняя версия установлена и Вам помогут.
Fenik17
Power Poster
Power Poster
Posts: 450
Joined: Tue Jun 01, 2010 5:42 am
Location: Russia, Yekaterinburg

Re: HOWTO: Как решить проблему ломаной кодировки

Post by Fenik17 »

Хочу добавить:

10. В панели управления хостингом бывает, что есть настройка кодировки сайта. Она, естественно, должна соответствовать кодировке таблиц в бд. Я на это наткнулся недавно на хостинге от nic.ru - у них по умолчанию для сайта ставиться windows-1251.
User avatar
Robur
Forum Members
Forum Members
Posts: 86
Joined: Wed Mar 11, 2009 10:41 am
Location: Russia, Kazan

Re: HOWTO: Как решить проблему ломаной кодировки

Post by Robur »

Или я туплю, или где...

Решил я тут обновить версию симпла до 1.8.1.

Как и обычно залил на хост, распаковал и скопировал в директорию сайта, а далее...:
www.matrosov.info/install/upgrades/  - форбидден, или иди отсюда
www.matrosov.info/install/ - установка пошла (не апгрейд, а установка). ок, тоже так делал раньше всё было нормально

вроде всё как полагается, указаны язык и кодировка (базу естественно не трогал). в результате же админка нормальная - сайт закракозябреный. в конфиге пробовал ставить и ru_RU.UTF-8 и ru_RU - без разницы.

попробовал другим путём. создал директорию test10, залил туда 1.8.1 ,установил - кракозябры!

В чём может быть дело, если сами бызы не трогались ВООБЩЕ? )естественно во время установки была убрана галка с "создать базы").

П.С. в тестовом снёс 1.8.1, поставил 1.7.... кракозябры остались :(((. неужели при установке 1.8.1 базы как то ковырнулись симплом????

П.П.С. Как я писал раньше, есть ещё папка /ubuntu/ в каталоге сайта. Там лежит отдельный движок (пока не апгрейдженый). Базу оба движка используют одну, префиксы к таблицам разные только. Там как работало нормально всё так и работает... http://matrosov.info/ubuntu/
Last edited by Robur on Thu Jul 22, 2010 5:52 pm, edited 1 time in total.
Locked

Return to “Russian - русский”