1

Тема: Проблемы с кириллицей

У меня какая-то аномальная проблема с MySQL (5 версия).

Если с помощью INSERT вставлять данные на русском языке (в консоле) - все идеально записывается в таблицу. Потом также идеально с помощью SELECT из нее вытаскивается (тоже в консоле).

Если я пытаюсь добавить кириллицу через php - она у меня просто не сохраняется. Я прочел много топиков, где у людей кириллица записывается неправильно (вопросиками например). У меня же она вообще через php не записывается. Хотя английский текст нормально сохраняется. Вот код, с помощью которого я это делаю:

<?php
  $title = 'поцфшопшщфцощпфцпфцп';
  $content = 'опфцзщщзщпфцпфцпфцпфп';
   require('config.php'); // из этого файла загружается данные для подключения
   $db = new mysqli($database, $login, $password, 'yaparser');
      if (get_magic_quotes_gpc())
        {
          $title = stripslashes($title);
          $content = stripslashes($content);
        }
     else
      {
        $title = $db -> real_escape_string($title);
        $content = $db -> real_escape_string($content);
      }
    $query = "insert into adminka values ('".$title."', '".$content."')";
    $result = $db->query($query);
    $db->close();
?>

А вот такая вот у меня таблица:

create table adminka
( title char(255) not null primary key,
  referat text not null
);

А это данные о кодировке MySQL:

mysql> show variables like 'character%';
+--------------------------+----------------------------------------------------
-----+
| Variable_name            | Value
     |
+--------------------------+----------------------------------------------------
-----+
| character_set_client     | cp1251
     |
| character_set_connection | cp1251
     |
| character_set_database   | cp1251
     |
| character_set_filesystem | binary
     |
| character_set_results    | cp1251
     |
| character_set_server     | cp1251
     |
| character_set_system     | utf8
     |
| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.0\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
8 rows in set (0.02 sec)

Что можно попробовать предпринять?

2

Re: Проблемы с кириллицей

Что выдает запрос?

SHOW CREATE TABLE `adminka`;

Возможно, из-за использования командной строки, таблица создалась в кодировке cp866.
Чтобы не мучиться с кодировками, используйте phpMyAdmin, так как в нем все очевидно.

3

Re: Проблемы с кириллицей

Hanut сказал:

Что выдает запрос?

SHOW CREATE TABLE `adminka`;

Возможно, из-за использования командной строки, таблица создалась в кодировке cp866.
Чтобы не мучиться с кодировками, используйте phpMyAdmin, так как в нем все очевидно.

mysql> SHOW CREATE TABLE `adminka`;
+---------+---------------------------------------------------------------------
------------------------------------------------------------------------------+
| Table   | Create Table
                                                                              |
+---------+---------------------------------------------------------------------
------------------------------------------------------------------------------+
| adminka | CREATE TABLE `adminka` (
  `title` char(255) NOT NULL,
  `referat` text NOT NULL,
  PRIMARY KEY  (`title`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 |
+---------+---------------------------------------------------------------------
------------------------------------------------------------------------------+
1 row in set (0.00 sec)

В my.ini у меня есть запись:
init-connect="SET NAMES cp1251"

4

Re: Проблемы с кириллицей

farrow
Да, странно. А сам php файл со скриптом в ANSI, а то может он случайно в UTF-8 сохранился?