1

Тема: Проблема с кодировкой

Добрый день!
Помогите как и что изменить.
Записи в базу даных начали писаться/отображаться крякозяблами.
До определенного времени писались в UTF8 (амперсант+диез+число) сейчас пишет крякозяблами вообще не читаемыми типа "PsP РёРjC<P" и т.д.
Старые записи остались в UTF8 кодировке (не читается  phpMyAdminом но "понятны" = амперсант+диез+число).
1. Судя по всему как-то нарушилась кодировка? Но тогда почему старые записи остались в UTF8?
2. Как сделать что бы phpMyAdmin отображал понятные русские символы (и записи в УТФ8 тоже) при просмотре БД

ЗЫ в браузере записи выводятся и старые и новые понятным русским языком (поэтому сразу и не заметил как пишется в БД), доступа к my.ini/my.cfg нету (БД на хостинге).

Спасибо!

2

Re: Проблема с кодировкой

Zum
Данные надо перекодировать и затем установить корректную кодировку соединения с MySQL. Только если в таблицах есть данные и в виде крякозябов PsP РёРjC<P и в виде сущностей, то могут быть проблемы.

Сделайте дамп и покажите структуру любой таблицы вместе с примером данных.

Какой скрипт используется? Посмотрите в его документации возможность установки кодировки соединения с MySQL.

3

Re: Проблема с кодировкой

Hanut сказал:

Zum
Данные надо перекодировать и затем установить корректную кодировку соединения с MySQL. Только если в таблицах есть данные и в виде крякозябов PsP РёРjC<P и в виде сущностей, то могут быть проблемы.
Сделайте дамп и покажите структуру любой таблицы вместе с примером данных.
Какой скрипт используется? Посмотрите в его документации возможность установки кодировки соединения с MySQL.

не могу файлы прикрепить (принскрин хотел выложить) это я как новичек на форуме не могу или не вижу где "прикрепить"?
намучался - в принципе уже согласен на новую базу - есть возможность эту снести (текст через браузер скопирую в ворд - там не много - потом повставляю)
но не могу понять как избежать таких ошибок в дальнейшем
charter_set_client   = utf8
charter_set_connection   = utf8
charter_set_database   = utf8
charter_set_filesystem   = binary
charter_set_result   = utf8
charter_set_server   = cp1251
charter_set_system   = utf8

или учитывая что сервер cp1251 - создавать все в cp1251, сравнение = cp1251 и не морочить голову? даже сэкономлю место ) т.к. текст почти на 90% русский.

Спасибо!

4

Re: Проблема с кодировкой

Zum
Картинки на форуме не загружаются.

Вы привели локальные настройки, как я понимаю. При запросе указанном ниже должно быть cp1251 везде.
SHOW GLOBAL VARIABLES LIKE 'char%';

Если кодировка соединения на сервере cp1251 и вы установите свой скрипт в данной кодировке, то проблем не будет. Хотя их не будет и если вы установите скрипт после настройки кодировки соединения с MySQL в utf8, к примеру.

Повторюсь: вам надо узнать возможность установки кодировки соединения с MySQL для вашего скрипта. Если это один из популярных скриптов форумов, то такая директива будет обязательно.

5

Re: Проблема с кодировкой

Hanut сказал:

Zum
Картинки на форуме не загружаются.

Вы привели локальные настройки, как я понимаю. При запросе указанном ниже должно быть cp1251 везде.
SHOW GLOBAL VARIABLES LIKE 'char%';

Если кодировка соединения на сервере cp1251 и вы установите свой скрипт в данной кодировке, то проблем не будет. Хотя их не будет и если вы установите скрипт после настройки кодировки соединения с MySQL в utf8, к примеру.

Повторюсь: вам надо узнать возможность установки кодировки соединения с MySQL для вашего скрипта. Если это один из популярных скриптов форумов, то такая директива будет обязательно.

Да это движок форума
При SHOW GLOBAL VARIABLES LIKE 'char%' - charter_set_system   = utf8 - остальне параметры cp1251
т.е. копать надо только скрипт?

6

Re: Проблема с кодировкой

Zum
Найдите в документации вашего форума директиву устанавливающую кодировку соединения с MySQL и установите ее в utf8. Это не изменит текущие данные в БД и они станут выводиться в виде крякозябов, поэтому форум придется переустановить заново.

Если вы захотите перейти на кодировку windows-1251, то кодировку соединения c MySQL устанавливать не придется (она уже cp1251), но переустановить форум все-равно потребуется, так как данные в БД находятся в виде крякозябов, да еще и в кодировке utf8.

7

Re: Проблема с кодировкой

Помогите разобраться с кодировками.
При выдёргивании из базы информации из текстовых полей, вместо русских символов идут сплошные “?”, латинские символы и цифры отображаются нормально.
Обращаюсь к базе так:
«

<?php
      $db = mysql_connect ("localhost","php","12345");
                mysql_select_db ("phpsite",$db);   
      $result = mysql_query ("SELECT title, meta_d, meta_k, text FROM settings WHERE page='index'",$db);   
       $myrow = mysql_fetch_array($result);
        echo $myrow['text'];
?>

»

В php-myadmin в этих полях всё отображается нормально… собственно я их через него и заполнял.

•    Сервер: localhost via TCP/IP
•    Версия сервера: 5.1.41-community
•    Версия протокола: 10
•    Пользователь: root@localhost
•    MySQL-кодировка: UTF-8 Unicode (utf8)
Сопоставление соединения с MySQL:cp1251_general_cs

Таблица settings
Тип MyISAM
Сравнение cp1251_general_cs

Пробовал менять сопоставления и сравнения с (cp1251_general_cs) на другие – произвольные… ВООБЩЕ НИЧЕГО НЕ ПРОИСХОДИТ.
Как поменять MySQL-кодировку: UTF-8 Unicode (utf8)  - НЕ ЗНАЮ….
Подскажите куда копать???

8

Re: Проблема с кодировкой

Спасибо, разобрался сам.
Так работает правильно smile

<?php
      $db = mysql_connect ("localhost","php","12345");
                mysql_select_db ("phpsite",$db);   
      mysql_query ("SET CHARACTER SET cp1251_koi8",$db);
      $result = mysql_query ("SELECT title, meta_d, meta_k, text FROM settings WHERE page='index'",$db);   
       $myrow = mysql_fetch_array($result);
        echo $myrow['text'];
?>

9

Re: Проблема с кодировкой

doom_mm сказал:

Спасибо, разобрался сам.
Так работает правильно smile

<?php
      $db = mysql_connect ("localhost","php","12345");
                mysql_select_db ("phpsite",$db);   
      mysql_query ("SET CHARACTER SET cp1251_koi8",$db);
      $result = mysql_query ("SELECT title, meta_d, meta_k, text FROM settings WHERE page='index'",$db);   
       $myrow = mysql_fetch_array($result);
        echo $myrow['text'];
?>

Подскажите пожалуйста, что делает запрос SET CHARACTER SET cp1251

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

10

Re: Проблема с кодировкой

crlf сказал:

Подскажите пожалуйста, что делает запрос SET CHARACTER SET cp1251_koi8

Устанавливает кодировку клиента MySQL и возвращаемых результатов в указанную кодировку. Так же устанавливает кодировку соединения с MySQL.

crlf сказал:

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

Изначально консоль работает в кодировке cp866. Чтобы увидеть данные, надо изменить вывод консоли. Подробности смотрите здесь: http://php-myadmin.ru/learning/mysql-inst.html