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

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

Moderators: iturbay, wdwp

Post Reply
ilia3d

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

Post by ilia3d »

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

кто знает, что нужно поправить в базе?  А точнее даже: как это можно поправить?
Last edited by ilia3d on Wed Apr 16, 2008 8:22 pm, edited 1 time in total.
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

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

Post by ZYV »

Я думаю к базе это никакого отношения не имеет, а вот к активной системной локали на основании параметров которых date генерирует дату - да. Я бы выяснил какие апгрейды ПО проводились на сервере и надавал бы виновным по шапкам.
unsigned double ZYV;
ilia3d

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

Post by ilia3d »

ZYV wrote: Я думаю к базе это никакого отношения не имеет, а вот к активной системной локали на основании параметров которых date генерирует дату - да. Я бы выяснил какие апгрейды ПО проводились на сервере и надавал бы виновным по шапкам.
я залез в базу, там вместо дат на русском, все теже ромбики с вопросами... может все-таки дело в базе?
Вариант с надаванием по шапке - практически неосуществим...
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

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

Post by ZYV »

Ну ты же не уточнил ГДЕ. Я думал в новостях, а в новостях они генерируются командой date. Если так, то конечно же дело в базе :) проверь все collations и т.п.
unsigned double ZYV;
Sonya

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

Post 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
Last edited by Sonya on Thu Apr 24, 2008 6:31 pm, edited 1 time in total.
ilia3d

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

Post 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';, к сожалению не помогло... буду думать дальше, спасибо.  :)
Sonya

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

Post 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 на ура.
Last edited by Sonya on Fri Apr 25, 2008 1:47 pm, edited 1 time in total.
Sonya

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

Post by Sonya »

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

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

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

Post 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 плохо разбираюсь (точнее - совсем не)
Спасибо )
Sonya

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

Post 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?
И конвертирует и меняет (и вышивать умеет :))
ilia3d

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

Post 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);
  }
}
?>
Sonya

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

Post 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  :(
Last edited by Sonya on Fri Apr 25, 2008 8:12 pm, edited 1 time in total.
ilia3d

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

Post by ilia3d »

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

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