SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 15.08.2010 11:39:40

Agnat
Участник
Зарегистрирован: 15.08.2010
Сообщений: 7

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

при загрузки данных на кирилице в БД выдает ошибку ERROR 1366 (HY000): Incorrect string value: '\x8C\xA0\xAA\xE1\xA8\xAC' for colum
n '......' at row 1. Порылся в инете, везьде советуют поставить 1 коировку для соединения, клиента, базы и тд... сделал все это.. а толку 0... заношу данные с смд.


Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.

C:\Documents and Settings\Admin.MAX>mysql -u root -p
Enter password: ***********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.24-rc-community MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use tsm_site;
Database changed
mysql> status;
--------------
mysql  Ver 14.14 Distrib 5.1.24-rc, for Win32 (ia32)

Connection id:          3
Current database:       tsm_site
Current user:           root@localhost
SSL:                    Not in use
Using delimiter:        ;
Server version:         5.1.24-rc-community MySQL Community Server (GPL)
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:               3306
Uptime:                 28 min 46 sec

Threads: 1  Questions: 19  Slow queries: 0  Opens: 17  Flush tables: 1  Open tab
les: 9  Queries per second avg: 0.11
--------------

mysql> show variables like 'char%';
+--------------------------+------------------------------+
| Variable_name            | Value                        |
+--------------------------+------------------------------+
| character_set_client     | utf8                         |
| character_set_connection | utf8                         |
| character_set_database   | utf8                         |
| character_set_filesystem | binary                       |
| character_set_results    | utf8                         |
| character_set_server     | utf8                         |
| character_set_system     | utf8                         |
| character_sets_dir       | D:\PHP\mysql\share\charsets\ |
+--------------------------+------------------------------+
8 rows in set (0.00 sec)

mysql> describe news;
+-------+-----------+------+-----+---------+----------------+
| Field | Type      | Null | Key | Default | Extra          |
+-------+-----------+------+-----+---------+----------------+
| id    | int(11)   | NO   | PRI | NULL    | auto_increment |
| name  | char(250) | NO   |     | NULL    |                |
| descr | char(250) | NO   |     | NULL    |                |
| cont  | text      | NO   |     | NULL    |                |
| dat   | date      | NO   |     | NULL    |                |
+-------+-----------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

mysql> insert into news (name, descr, cont, dat) values ('Максим', 'Максим',
    -> 'Максим', '2000-02-01');
ERROR 1366 (HY000): Incorrect string value: '\x8C\xA0\xAA\xE1\xA8\xAC' for colum
n 'name' at row 1

Неактивен

 

#2 15.08.2010 12:00:59

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

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

Скорее всего, кодировка таблицы не поддерживает текущую кодировку (SHOW CREATE TABLE news). Также смущает utf8 в windows - Вы уверены, что у Вас клиент отправляет данные в utf8?

UPD: второе, наверное, даже более вероятно, учитывая количество символов в ошибке.

Неактивен

 

#3 15.08.2010 12:08:43

Agnat
Участник
Зарегистрирован: 15.08.2010
Сообщений: 7

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

вот первый пункт:



mysql> SHOW CREATE TABLE news;
+-------+-----------------------------------------------------------------------
--------------------------------------------------------------------------------
----------------------------------------------------------------------------+
| Table | Create Table

                                                                            |
+-------+-----------------------------------------------------------------------
--------------------------------------------------------------------------------
----------------------------------------------------------------------------+
| news  | CREATE TABLE `news` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(250) NOT NULL,
  `descr` char(250) NOT NULL,
  `cont` text NOT NULL,
  `dat` date NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-----------------------------------------------------------------------
--------------------------------------------------------------------------------
----------------------------------------------------------------------------+
1 row in set (0.01 sec)

как проверить в какой кодировке отправляются данные?

Неактивен

 

#4 15.08.2010 12:44:08

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

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

Если это стандартный терминал windows, то по умолчанию кодировка cp866. Менять можно командой chcp. Список кодовых страниц есть на сайте msdn

Неактивен

 

#5 15.08.2010 13:24:07

Agnat
Участник
Зарегистрирован: 15.08.2010
Сообщений: 7

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

да..... ср866...

Неактивен

 

#6 15.08.2010 13:37:37

Agnat
Участник
Зарегистрирован: 15.08.2010
Сообщений: 7

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

изменил... вот что получилось:

Microsoft Windows XP [‚ҐабЁп 5.1.2600]
(‘) Љ®аЇ®а жЁп Њ ©Єа®б®дв, 1985-2001.

C:\Documents and Settings\Admin.MAX>chcp
’ҐЄгй п Є®¤®ў п бва ­Ёж : 866

C:\Documents and Settings\Admin.MAX>chcp 65001
Текущая кодовая сp
C:\Documents and Settings\Admin.MAX>mysql -u root -p
Enter password: ***********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.1.24-rc-community MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use tsm_site;
Database changed
mysql> status
--------------
mysql  Ver 14.14 Distrib 5.1.24-rc, for Win32 (ia32)

Connection id:          6
Current database:       tsm_site
Current user:           root@localhost
SSL:                    Not in use
Using delimiter:        ;
Server version:         5.1.24-rc-community MySQL Community Server (GPL)
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:               3306
Uptime:                 2 hours 36 min 16 sec

Threads: 1  Questions: 37  Slow queries: 0  Opens: 20  Flush tables: 1  Open tab
les: 0  Queries per second avg: 0.3
--------------

mysql> show variables like 'char%';
+--------------------------+------------------------------+
| Variable_name            | Value                        |
+--------------------------+------------------------------+
| character_set_client     | utf8                         |
| character_set_connection | utf8                         |
| character_set_database   | utf8                         |
| character_set_filesystem | binary                       |
| character_set_results    | utf8                         |
| character_set_server     | utf8                         |
| character_set_system     | utf8                         |
| character_sets_dir       | D:\PHP\mysql\share\charsets\ |
+--------------------------+------------------------------+
8 rows in set (0.00 sec)

mysql> insert into news (name, descr, cont, dat) values('Max', 'Nazar', 'Student
', '2010-02-02');
Query OK, 1 row affected (0.05 sec)

mysql> select * from news;
+----+------+-------+---------+------------+
| id | name | descr | cont    | dat        |
+----+------+-------+---------+------------+
|  1 | Max  | Nazar | Student | 2010-02-02 |
+----+------+-------+---------+------------+
1 row in set (0.00 sec)

mysql> insert into news (name, descr, cont, dat) values('Максим', 'NazarnР
ќР°Р·Р°СЂРµРЅРєРѕ', 'Сту');
Bye



вот все те каракули - это текст на кирилице...... и чето длисконектит после запроса инсерт...

Неактивен

 

#7 15.08.2010 18:54:31

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

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

Честно говоря, не понимаю, откуда каракули.
Надо делать как-то так:

chcp 65001
mysql -e "INSERT INTO news VALUES (NULL, 'Максим', '', '', NOW())"
mysql -e "SELECT * FROM news"

Ну или воспользуйтесь другим клиентом. Например, MySQL GUI Tools.

Неактивен

 

#8 16.08.2010 18:46:13

Agnat
Участник
Зарегистрирован: 15.08.2010
Сообщений: 7

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

хм... а вот такое.... поставил пхпмайадмин... с него все заносится нормально в БД.... и отображается на странице все нормально... а с mysqlcc и cmd такая же ошибка выдается...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson