1

Тема: Вопросики вместо русского

Здравствуйте!
Что делать, кодировка отображается не правильно!

Скачал дамп базы с одного сервера и перенес на другой, и появились вопросики вместо текста. Дамп скачивал в разной кодировке, ничего не меняется, последний раз скачал в cp1251

после команды SHOW VARIABLES LIKE 'character%'
на старом месте результаты:
Variable_name     Value
character_set_client     utf8
character_set_connection     utf8
character_set_database     cp1251
character_set_filesystem     binary
character_set_results     utf8
character_set_server     cp1251
character_set_system     utf8
character_sets_dir     /usr/share/mysql/charsets/

на новом где вопросики:
Variable_name     Value
character_set_client     utf8
character_set_connection     cp1251
character_set_database     cp1251
character_set_filesystem     binary
character_set_results     utf8
character_set_server     latin1
character_set_system     utf8
character_sets_dir     /usr/share/mysql/charsets/

что делать?

2

Re: Вопросики вместо русского

seboz
Покажите вывод глобальных настроек:
SHOW GLOBAL VARIABLES LIKE 'character%';

Посмотрите как выглядит кириллица на новом сервере в phpMyAdmin. Она может выглядеть нормально, либо уже там будет в битом виде (крякозябы).

3

Re: Вопросики вместо русского

Кириллица выглядит совершенно нормально, под разным дампами кодирово.

Вот что выдает

Variable_name     Value
character_set_client     latin1
character_set_connection     latin1
character_set_database     latin1
character_set_filesystem     binary
character_set_results     latin1
character_set_server     latin1
character_set_system     utf8
character_sets_dir     /usr/share/mysql/charsets/

4

Re: Вопросики вместо русского

seboz
Если в phpMyAdmin кириллица выглядит нормально, то надо только установить кодировку соединения с MySQL в cp1251. Обычные скрипты вроде форумов имеют директиву для установки кодировки соединения с MySQL, поэтому ее только надо прописать. Если скрипт собственный, или такой директивы не имеет, то необходимо найти вызов функции mysql_connect и сразу после нее добавить строку:

mysql_query('SET NAMES cp1251');

5

Re: Вопросики вместо русского

Вот что нашел в php файлах
может тут что прописать?

в 1 файле
  if (!($link=mysql_connect($hostName,$userName,$password))) {
    printf("Ошибка при соединении с MySQL !\n");
    exit();

2 файл -
$serverid  = mysql_connect($POLLDB["host"], $POLLDB["user"], $POLLDB["pass"]) or poll_error_msg("Cannot connect to mysql database");
    if(!@mysql_select_db($POLLDB["dbName"],$serverid)) {
        mysql_create_db($POLLDB["dbName"]);

3 файл -
$this->conn_id = mysql_connect($this->db['host'].":".$this->port,$this->db['user'],$this->db['pass']);
        if ($this->conn_id == 0) {
            $this->sql_error("Connection Error");

6

Re: Вопросики вместо русского

Все спасибо, добавил строчку и заработало.
mysql_query("SET NAMES 'cp1251' ");

и все помогло

А если поставить
mysql_query("SET NAMES 'cp1251' ");
mysql_query("set character_set_client='cp1251'");
mysql_query("set character_set_conneccion='cp1251'");
mysql_query("set character_set_results='cp1251'");

то какая разница?

7

Re: Вопросики вместо русского

Достаточно строки mysql_query('SET NAMES cp1251');
Остальное лишнее, так как устанавливается автоматически данным запросом.

Если возможны несколько соединений, то лучше указать в функции к какому из них относится запрос.

// 1
mysql_query('SET NAMES cp1251', $link);

// 2
mysql_query('SET NAMES cp1251', $serverid);

// 3
mysql_query('SET NAMES cp1251', $this->conn_id);