SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 11.04.2010 21:35:11

FiMko
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 18.09.2009
Сообщений: 198

Настроить консоль MySQL для работы с кириллицей

Ребята, привет всем!

Не подскажите как настроить консоль MySQL для работы с кириллицей?

Например есть таблица:

mysql> select * from words;
+-------+---------+
|   id  |   word  |
+-------+---------+
|     1 |   тест  |
+-------+---------+

Теперь пишем в консоли:
mysql> select * from words where word="тест";
Empty set, 1 warning (0.00 sec)

mysql> show warnings;
+---------+------+-------------------------------------------------------------------+
| Level   | Code | Message                                                           |
+---------+------+-------------------------------------------------------------------+
| Warning | 1366 | Incorrect string value: '\xA0\xAA\xA0' for column 'word' at row 1 |
+---------+------+-------------------------------------------------------------------+

Очень неудобно получается работать, приходится использовать другие клиенты MySQL...

Дополнительная информация:
Текущая кодовая страница консоли Windows: 866
collation_connection: utf8_general_ci
collation_database: utf8_general_ci
collation_server: utf8_general_ci

Отредактированно FiMko (11.04.2010 21:36:53)

Неактивен

 

#2 11.04.2010 22:09:54

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 848

Re: Настроить консоль MySQL для работы с кириллицей

Ключевой момент:

Текущая кодовая страница консоли Windows: 866

Тут paulus когда-то давно писал, как виндовую консоль заставить поменять кодировку, кажется... (я уж не помню)

Неактивен

 

#3 11.04.2010 22:11:28

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5831

Re: Настроить консоль MySQL для работы с кириллицей

Кодировка виндовой консоли неправильно определяется сервером, отсюда и проблемы. В начале работы нужно явно указать используемую вами кодировку
SET NAMES cp866;


Как сменить кодировку консоли:
http://sqlinfo.ru/forum/viewtopic.php?pid=6440#p6440

Неактивен

 

#4 11.04.2010 22:18:10

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 848

Re: Настроить консоль MySQL для работы с кириллицей

У виндовой команды chcp своя нумерация кодировок, поэтому чтобы использовать UTF-8, надо написать:

Код:

chcp 65001

Неактивен

 

#5 11.04.2010 22:34:08

FiMko
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 18.09.2009
Сообщений: 198

Re: Настроить консоль MySQL для работы с кириллицей

Не помогло...

Код:

c:\WebServers\usr\local\mysql5\bin>chcp 65001
Текущая кодовая страница: 65001

c:\WebServers\usr\local\mysql5\bin>mysql.exe -u root -p
mysql> connect db;
mysql> select * from words where word="тест";
ничего...
mysql> select * from words;
+-------+---------+
|   id  |   word  |
+-------+---------+
|     1 |         | <- пусто
+-------+---------+
mysql> exit
Bye

Код:

c:\WebServers\usr\local\mysql5\bin>chcp 866
Текущая кодовая страница: 866
c:\WebServers\usr\local\mysql5\bin>mysql.exe -u root -p
mysql> connect db;
mysql> SET NAMES cp866;
mysql> select * from words where word="тест";
Empty set, 1 warning (0.05 sec)
mysql> show warnings;
+---------+------+-------------------------------------------------------------------+
| Level   | Code | Message                                                           |
+---------+------+-------------------------------------------------------------------+
| Warning | 1366 | Incorrect string value: '\xA0\xAA\xA0' for column 'word' at row 1 |
+---------+------+-------------------------------------------------------------------+

Отредактированно FiMko (11.04.2010 22:35:22)

Неактивен

 

#6 12.04.2010 00:08:30

FiMko
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 18.09.2009
Сообщений: 198

Re: Настроить консоль MySQL для работы с кириллицей

Методом подбора пришел к правильному отображению в консоли:

Код:

c:\WebServers\usr\local\mysql5\bin>chcp 866
Текущая кодовая страница: 866
c:\WebServers\usr\local\mysql5\bin>mysql.exe -u root -p
mysql> set names cp866;
mysql> connect db;
mysql> select * from words;
+-------+---------+
|   id  |   word  |
+-------+---------+
|     1 |   тест  |
+-------+---------+
mysql> insert into words (word) values ("мама");
mysql> select * from words;
+-------+---------+
|   id  |   word  |
+-------+---------+
|     1 |   тест  |
+-------+---------+
|     2 |   мама  |
+-------+---------+

Отредактированно FiMko (12.04.2010 00:13:25)

Неактивен

 

#7 12.04.2010 00:15:43

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 848

Re: Настроить консоль MySQL для работы с кириллицей

Код:

c:\WebServers\usr\local\mysql5\bin>chcp 65001
Текущая кодовая страница: 65001

c:\WebServers\usr\local\mysql5\bin>mysql.exe -u root -p
mysql> connect db;
mysql> select * from words where word="тест";

А чего ж здесь-то SET NAMES UTF-8 не выполнили?

Неактивен

 

#8 12.04.2010 00:20:41

FiMko
Активист
Откуда: Санкт-Петербург
Зарегистрирован: 18.09.2009
Сообщений: 198

Re: Настроить консоль MySQL для работы с кириллицей

LazY написал:

Код:

c:\WebServers\usr\local\mysql5\bin>chcp 65001
Текущая кодовая страница: 65001

c:\WebServers\usr\local\mysql5\bin>mysql.exe -u root -p
mysql> connect db;
mysql> select * from words where word="тест";

А чего ж здесь-то SET NAMES UTF-8 не выполнили?

Дык делал...

Код:

c:\WebServers\usr\local\mysql5\bin>chcp 65001
Текущая кодовая страница: 65001

c:\WebServers\usr\local\mysql5\bin>mysql.exe -u root -p
mysql> set names utf8;
mysql> connect lexikos;
mysql> select * from words;
+-------+---------+
|   id  |   word  |
+-------+---------+
|     1 |         | <- пусто
+-------+---------+
5 rows in set (0.00 sec)

Выдача есть, но "пустая". Шрифт консоли Lucida Concole.
---
"Полезные" ссылки для потомков (может что-то из приведенного поможет вам решить проблемы и следовательно сэкономит время на поиск):
Кодировка в MySQL 5.1
Проблемы с кодировкой в MySQL версий 4.1+
См. пункт "Некоторые замечания для Win 32 платформы"
cmd.exe + mysql.exe = только cp1251?

Отредактированно FiMko (12.04.2010 00:32:12)

Неактивен

 

Board footer

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