Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2013, 00:08   #1
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию Кириллица в MySQL

Написал скрипт, который создает БД (ever) и таблицу (groups), также он вносит в нее несколько тестовых записей.
Короче
выполняю скрипт
Код:
mysql> CREATE DATABASE `ever` CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

use ever;

mysql> CREATE TABLE `ever`.`groups` (
    ->  `id` int(11) NOT NULL auto_increment,
    ->  `name` varchar(50) NOT NULL,
    ->  PRIMARY KEY (`id`),
    ->  UNIQUE KEY `name` (`name`)
    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO groups (`name`) VALUES ('Admins');
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> INSERT INTO groups (`name`) VALUES ('Символы кириллицы');
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> INSERT INTO groups (`name`) VALUES ('Текст');
ERROR 1062 (23000): Duplicate entry '' for key 'name'
Получаю ошибку "Duplicate entry '' for key 'name'".

Проверяю таблицу на наличие дубликатов последней записи
Код:
mysql> SELECT * FROM groups;
+----+--------+
|  id  | name    |
+----+--------+
|  1   | Admins |
|  2   |           |
+----+--------+
2 rows in set (0.00 sec)
Оказывается что "Символы кириллицы" не записались.

В качестве эксперимента записал в поле `name`строку с латинскими и кириллическими символами
Код:
mysql> INSERT INTO groups (`name`) VALUES ('QйWцSsFшЩЫ');
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> SELECT * FROM groups;
+----+--------+
|  id  | name    |
+----+--------+
|  1   | Admins |
|  2   |           |
|  3   | Q        |
+----+--------+
Записался только первый символ (т. к. он латинский). Т.е. как только встречается кириллический символ - вся остальная часть строки отбрасывается.

Как записывать кириллицу?
Skype: CODERua

Последний раз редактировалось [CODER]; 19.04.2013 в 00:14.
[CODER] вне форума Ответить с цитированием
Старый 03.05.2013, 00:31   #2
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Похоже, Вы попались на ту же удочку, на которую "клюнула" я в свое время.
Если Вы хотите использовать кирилицу, при создании таблицы указывая тип текстовых полей надо писать тип nvarchar вместо varchar. Буковка N указывает на то, что будет использоваться кодировка utf-8 и тогда хорошо будет обрабатываться как латиница, так и кирилица. Попробуйте создать тестовую копию таблицы, заменив при создании тип символьных данных на рекомендованный выше. Через Alter поменять не удастся, так как varchar не конвертируется в nvarchar.
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кириллица не отображается корректно(PHP и MySQL) Frants Помощь студентам 1 12.03.2012 04:46
Кириллица в mysql под dos-ом ololo-schoolboy SQL, базы данных 0 01.01.2011 16:08
Кириллица Hemul Visual C++ 7 29.12.2010 19:38
Кириллица D.O.G БД в Delphi 4 18.10.2010 06:42
Библиотека mysql++ и кириллица в результатах запроса. oleg kutkov Общие вопросы C/C++ 2 26.03.2009 13:25