Page 1 of 1

Вместо дат на русском, в базе значки вопрос&#

Posted: Wed Apr 16, 2008 2:56 pm
by ilia3d
Не знаю после чего (я ничего не трогал!  ::)
но вместо дат на русском (допустим 16 Апр 2008)  вылазит что-то вроде  "16 [glow=red,2,300]? ? ? ?[/glow] 2008"

кто знает, что нужно поправить в базе?  А точнее даже: как это можно поправить?

Re: Вместо дат на русском, в базе значки вопроl

Posted: Thu Apr 17, 2008 8:34 pm
by ZYV
Я думаю к базе это никакого отношения не имеет, а вот к активной системной локали на основании параметров которых date генерирует дату - да. Я бы выяснил какие апгрейды ПО проводились на сервере и надавал бы виновным по шапкам.

Re: Вместо дат на русском, в базе значки вопроl

Posted: Fri Apr 18, 2008 10:50 am
by ilia3d
ZYV wrote: Я думаю к базе это никакого отношения не имеет, а вот к активной системной локали на основании параметров которых date генерирует дату - да. Я бы выяснил какие апгрейды ПО проводились на сервере и надавал бы виновным по шапкам.
я залез в базу, там вместо дат на русском, все теже ромбики с вопросами... может все-таки дело в базе?
Вариант с надаванием по шапке - практически неосуществим...

Re: Вместо дат на русском, в базе значки вопроl

Posted: Sat Apr 19, 2008 9:47 pm
by ZYV
Ну ты же не уточнил ГДЕ. Я думал в новостях, а в новостях они генерируются командой date. Если так, то конечно же дело в базе :) проверь все collations и т.п.

Re: Вместо дат на русском, в базе значки вопроl

Posted: Thu Apr 24, 2008 6:14 pm
by Sonya
Может и не в базе. У меня сбились настройки после обновления php на сервере. До обновления в config.php стояло

Code: Select all

$config['locale'] = '';
и все работало.
После обновления пошли ромбики, прописала

Code: Select all

$config['locale'] = 'ru_RU.UTF-8';
и все опять заработало. Может поможет.
И еще вот тут по всем пунктам проверить http://forum.cmsmadesimple.org/index.ph ... l#msg98448

Re: Вместо дат на русском, в базе значки вопроl

Posted: Fri Apr 25, 2008 1:12 pm
by ilia3d
Sonya wrote: Может и не в базе. У меня сбились настройки после обновления php на сервере. До обновления в config.php стояло

Code: Select all

$config['locale'] = '';
и все работало.
После обновления пошли ромбики, прописала

Code: Select all

$config['locale'] = 'ru_RU.UTF-8';
и все опять заработало. Может поможет.
И еще вот тут по всем пунктам проверить http://forum.cmsmadesimple.org/index.ph ... l#msg98448
да, была пустая строчка. Вставил 'ru_RU.UTF-8';, к сожалению не помогло... буду думать дальше, спасибо.  :)

Re: Вместо дат на русском, в базе значки вопроl

Posted: Fri Apr 25, 2008 1:41 pm
by Sonya
Плясать нужно от базы данных:
1a Что стоит в поле Kollation в колонке, которая болеет?
1b Что стоит в Kollation таблицы, в которой колонка, которая болеет?
1с Что стоит в Kollation для всей базы данных?

2. Если у тебя база сделана в русской кодировке windows, то нужно прописывать в include.php

Code: Select all

SET NAMES cp1251
А не utf8.

3. В config.php попробуй

Code: Select all

$config['locale'] = 'ru_RU.win1251';


4. Дальше, что стоит в meta http-equiv на странице?

Code: Select all

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
или

Code: Select all

<meta http-equiv="Content-Type" content="text/html; charset=win-1251" /> 
Тоже в зависимости от кодировки поставить.

Если у тебя кодировочный салат, то советую один раз перекодировать всю базу в то, что тебе надо, при помощи команды sed, выполненной на sql dump твоей базы. Пример перевода из latin1 в utf8

Code: Select all

sed  -e 's/latin1/utf8/g' -i dump.sql
или из utf8 в кодировку windows

Code: Select all

sed  -e 's/utf8/cp1251/g' -i dump.sql
Только учти, что при втором варианте, все, что не переводится в кодировку windows, ü, ö, ä - например, заменится на кракозябры.

Чисто по собственному опыту, всегда все делаю на utf8. Индексируется и в yandex и в rambler на ура.

Re: Вместо дат на русском, в базе значки вопроl

Posted: Fri Apr 25, 2008 1:49 pm
by Sonya
И еще, если ромбики стоят, то значит неверная кодировка, если же стоят вопросительные знаки, то данные утеряны и восстановить нельзя.

Поправьте меня, если я не права  :P

Re: Вместо дат на русском, в базе значки вопроl

Posted: Fri Apr 25, 2008 3:28 pm
by ilia3d
Sonya wrote: Плясать нужно от базы данных:
1a Что стоит в поле Kollation в колонке, которая болеет?
1b Что стоит в Kollation таблицы, в которой колонка, которая болеет?
1с Что стоит в Kollation для всей базы данных?

2. Если у тебя база сделана в русской кодировке windows, то нужно прописывать в include.php

Code: Select all

SET NAMES cp1251
А не utf8.

3. В config.php попробуй

Code: Select all

$config['locale'] = 'ru_RU.win1251';


4. Дальше, что стоит в meta http-equiv на странице?

Code: Select all

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
или

Code: Select all

<meta http-equiv="Content-Type" content="text/html; charset=win-1251" /> 
Тоже в зависимости от кодировки поставить.

Если у тебя кодировочный салат, то советую один раз перекодировать всю базу в то, что тебе надо, при помощи команды sed, выполненной на sql dump твоей базы. Пример перевода из latin1 в utf8

Code: Select all

sed  -e 's/latin1/utf8/g' -i dump.sql
или из utf8 в кодировку windows

Code: Select all

sed  -e 's/utf8/cp1251/g' -i dump.sql
Только учти, что при втором варианте, все, что не переводится в кодировку windows, ü, ö, ä - например, заменится на кракозябры.

Чисто по собственному опыту, всегда все делаю на utf8. Индексируется и в yandex и в rambler на ура.
Начал танцевать,  :) вот что обнаружилось:

В базе везде  kollation стоит на "cp1251_general_ci".
Мда...
В метатегах, конфиге -  utf8

Проще конечно вернуть настройки назад на 1251, но мне не хотелось бы этого делать )

А команда  sed, ее надо выполнять из  SQL окошка, я правильно понял? Если нет, то откуда?  :)

Кодировочного салата нет, есть только пара проблем с буквами.... Я так понимаю sed именно конвертирует, а не меняет  Kollation? Сорри если вопрос звучит глупо, но я в mySql плохо разбираюсь (точнее - совсем не)
Спасибо )

Re: Вместо дат на русском, в базе значки вопроl

Posted: Fri Apr 25, 2008 3:40 pm
by Sonya
ilia3d wrote: В базе везде  kollation стоит на "cp1251_general_ci".
Хорошо, что в базе данных, все одинаково. По крайней мере там салата нет.
ilia3d wrote: Мда...
В метатегах, конфиге -  utf8
Мда... :) Нехорошо.
ilia3d wrote: Проще конечно вернуть настройки назад на 1251, но мне не хотелось бы этого делать )
Во-первых, проще. Во-вторых, если страница на 100% русская и пользователи контент не пишут, то можно не заморачиваться на utf8. Но если на странице есть тексты на разных языках или комменты для пользователей (а они и на китайском иногда пишут:), то аккуратней будет переделать все в utf8, но для этого нужно немного помучиться.
ilia3d wrote: А команда  sed, ее надо выполнять из  SQL окошка, я правильно понял? Если нет, то откуда?  :)
Команда sed выполняется в командной строке сервера. Перед тем, как я начну объяснять. У тебя установлен mysql в локалке или есть доступ ssh на сервер? Если ни то, ни другое, то тогда никак.
ilia3d wrote:Я так понимаю sed именно конвертирует, а не меняет  Kollation?
И конвертирует и меняет (и вышивать умеет :))

Re: Вместо дат на русском, в базе значки вопроl

Posted: Fri Apr 25, 2008 7:17 pm
by ilia3d
Хорошо, что в базе данных, все одинаково. По крайней мере там салата нет.
ну как сказать... я не сидел сложа руки, так что уже есть  ::)
Мда... Smiley Нехорошо.
Как-то звучит необнадеживающе )
Во-первых, проще. Во-вторых, если страница на 100% русская и пользователи контент не пишут, то можно не заморачиваться на utf8. Но если на странице есть тексты на разных языках или комменты для пользователей (а они и на китайском иногда пишутSmiley, то аккуратней будет переделать все в utf8, но для этого нужно немного помучиться.
увы... мультиланг. Да и опять же, рамблеры всякие лучше индексировать должны.
Во-первых, проще. Во-вторых, если страница на 100% русская и пользователи контент не пишут, то можно не заморачиваться на utf8. Но если на странице есть тексты на разных языках или комменты для пользователей (а они и на китайском иногда пишутSmiley, то аккуратней будет переделать все в utf8, но для этого нужно немного помучиться.
предпочитаю помучиться  (с) Сухов
Команда sed выполняется в командной строке сервера. Перед тем, как я начну объяснять. У тебя установлен mysql в локалке или есть доступ ssh на сервер? Если ни то, ни другое, то тогда никак.
Понятненько... ничегошеньки нет. Все на удаленном сервере, а админы там такие редиски, что вспоминать не хочется.
Я тут скрипт нашел, на  php, вроде как тупо выполняет по всем базам команду  ALTER. Но не нашел описания, как это безобразие использовать. Вот это чудо инженерной мысли:

Code: Select all

<?php
global $db_url;
$database = parse_url($db_url);
$result = db_query('show tables');
while($tables = db_fetch_array($result)) {
  foreach ($tables as $key => $value) {
    db_queryd("ALTER TABLE %s COLLATE utf8_general_ci",$value);
  }
}
?>

Re: Вместо дат на русском, в базе значки вопроl

Posted: Fri Apr 25, 2008 7:39 pm
by Sonya
ilia3d wrote: увы... мультиланг. Да и опять же, рамблеры всякие лучше индексировать должны.
В таком случае utf8 просто необходим.
ilia3d wrote: предпочитаю помучиться  (с) Сухов
хороший настрой :) Тогда тебе первое задание: установи WAMP у себя на компьютере. Вот так http://sqlinfo.ru/articles/info/6.html например. Как только установишь. Переноси свой CMS и базу данных в локалку и можно будет играться.
ilia3d wrote: Понятненько... ничегошеньки нет. Все на удаленном сервере, а админы там такие редиски, что вспоминать не хочется.
Знаешь, меня бы испугал такой вариант. То есть у тебя лично на компе даже копии твоего сайта нет? А если у редисок завтра накроется сервер, что тогда?  ;)
ilia3d wrote: Я тут скрипт нашел, на  php, вроде как тупо выполняет по всем базам команду  ALTER. Но не нашел описания, как это безобразие использовать.
Это чудо тебе не поможет, потому что оно просто поменяет Kollation (причем только в таблицах, а в колонках останется 1251). А тебе нужно еще и конвертировать базу данных. То есть, как ни крути, тебе нужен доступ на командную строку mysql  :(

Re: Вместо дат на русском, в базе значки вопроl

Posted: Sun Apr 27, 2008 2:23 pm
by ilia3d
В таком случае utf8 просто необходим.
я тоже так думаю.
хороший настрой Smiley Тогда тебе первое задание: установи WAMP у себя на компьютере. Вот так http://sqlinfo.ru/articles/info/6.html например. Как только установишь. Переноси свой CMS и базу данных в локалку и можно будет играться.
Спасибо за наводку ) почитал, посмотрел - как-то запутано все с установкой... До этого я слышал про  XAMPP - вот его и водрузил, все работает вроде бы )
Знаешь, меня бы испугал такой вариант. То есть у тебя лично на компе даже копии твоего сайта нет? А если у редисок завтра накроется сервер, что тогда?
тогда буду восстанавливаться из бэкапа ) не очень регулярно, но делаю )
Это чудо тебе не поможет, потому что оно просто поменяет Kollation (причем только в таблицах, а в колонках останется 1251). А тебе нужно еще и конвертировать базу данных. То есть, как ни крути, тебе нужен доступ на командную строку mysql  Sad
как я написал в соседней ветке - помогло ручное перекодирование дампа, и перезаливка базы... слава богу она относительно маленькая.