SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 11.05.2008 01:13:57

Primax
Участник
Зарегистрирован: 11.05.2008
Сообщений: 5

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

Всем привет. Помогите решить такую проблему..
Запускаю mysql из cmd.exe таким образом :
mysql --user=root --password=root --default-character-set=utf8

Дальше создаю базу :
create database xitex_shop character set utf8;

Затем таблицу :
create table category (id int not null auto_increment primary key,
name varchar(30) character set utf8 not null,
description varchar(255) character set utf8) character set utf8;

А когда пробую добавить в таблицу запись :
insert into category (name, description) values ('Процессоры', 'Процессор
ы от Intel, AMD');

Мне в ответ такая ошибка :
ERROR 1406 (22001): Data too long for column 'name' at row 1


Не понимаю в чем проблема...вроде указал явно кодировки...почему длина слишком большая ?
Пробовал и оставить по одному символу - та же ошибка sad

Неактивен

 

#2 11.05.2008 02:58:41

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

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

Для таблиц Вы задали кодировку правильно, даже несколько избыточно. Но для подключения Вам нужно указать ту кодировку, в которой работает консоль. Попробуйте после подключения выполнить


SET NAMES CP1251;
 

и затем вставить данные

Неактивен

 

#3 11.05.2008 15:38:28

Primax
Участник
Зарегистрирован: 11.05.2008
Сообщений: 5

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

cp1251 мне не подходит...надо utf8)
Если пишу :

SET NAMES utf8;

А потом :
insert into category (name, description) values ('Проц', 'Проц');

Получаю знакомую ошибку :
ERROR 1406 (22001): Data too long for column 'name' at row 1

Как-нибудь можно из консоли Windows XP вставить данные в БД по кодировке utf8 ?

Неактивен

 

#4 11.05.2008 15:44:26

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

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

Данные вставляются в таблицу в той кодировке, в которой таблица. А клиентам передаются в той кодировке, в которой клиент их передает. В данном случае надо указать SET NAMES ту кодировку, в которой работает консоль. MySQL уже сама перекодирует в кодировку, в которой таблицы. См. http://sqlinfo.ru/articles/encoding/

Неактивен

 

#5 11.05.2008 16:41:16

Primax
Участник
Зарегистрирован: 11.05.2008
Сообщений: 5

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

А если скаже я вставляю в БД данные НЕ из MySQL Command Line, а скажем из java-сервлета(там уж точно в utf8), а когда делаю в MySQL Command Line :
SELECT * FROM category;

то вижу вопросительные знаки в тех записях, которые я вставил через сервлет..это нормально да ? Т.к. консоль выводит на экран символы в cp1251, а в БД они в кодировке utf8..

Неактивен

 

#6 11.05.2008 20:43:17

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

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

В сервлете после коннекта надо выполнить:
query("SET NAMES UTF8");
и только после этого вставлять данные

Если консоль в виндоус вообще работает в какой-либо кодировке, то либо SET NAMES CP1251 либо SET NAMES CP866 в консоли должно привести к нормальному отображению данных (зависит от версии Windows), попробуйте лучше MySQL Query Browser.

Неактивен

 

#7 12.05.2008 15:09:00

Primax
Участник
Зарегистрирован: 11.05.2008
Сообщений: 5

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

В сервлете перед подключением делаю так :
PropertiesconnInfo = new Properties();

connInfo.put("user", user);
connInfo.put("password", password);

connInfo.put("useUnicode","true");
connInfo.put("characterEncoding","UTF-8");


В MySQL Query Browser нормально отображаются данные ( т.е. русские буквы - русские ))...а вот с консолью беда(

Неактивен

 

#8 12.05.2008 15:17:10

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

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

Если в Query browser нормально, значит ОК. Если виндоус английский, то консоль может вообще не работать с русской кодировкой, если русский - то работает, но вот с какой, не знаю.

Неактивен

 

#9 13.05.2008 00:32:10

Primax
Участник
Зарегистрирован: 11.05.2008
Сообщений: 5

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

ок, большое спасибо за помощь smile

Неактивен

 

Board footer

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