1

Тема: ОШИБКА #1366 - Incorrect string value: '\xC2\xC0\xD

Добре время суток!
Помогите, пожалуйста))
Проблема: появляется сообщение #1366 - Incorrect string value: '\xC2\xC0\xD4\xC2\xC0' for column 'name' at row 1
при выполнении запроса
INSERT INTO categories (name,file) VALUES ("ВАФВА",1);

Данный запрос выполняю в PhpMyAdmin.

Вот мои таблицы:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- phpMyAdmin SQL Dump
-- version 3.2.5
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Фев 17 2010 г., 23:29
-- Версия сервера: 5.1.40
-- Версия PHP: 5.2.11

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- База данных: `site`
--

-- --------------------------------------------------------

--
-- Структура таблицы `categories`
--

CREATE TABLE IF NOT EXISTS `categories` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `file` tinyint(1) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `namefile` (`name`,`file`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1250 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Структура таблицы `items`
--

CREATE TABLE IF NOT EXISTS `items` (
  `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
  `author` varchar(30) NOT NULL,
  `name` varchar(60) NOT NULL,
  `added` date NOT NULL,
  `href` varchar(255) NOT NULL,
  `catid` smallint(5) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `added` (`added`),
  KEY `catid` (`catid`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1250 AUTO_INCREMENT=1 ;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SHOW GLOBAL VARIABLES LIKE 'CHAR%';
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:\web\MySQL Server 5.1\share\charsets\

SHOW VARIABLES LIKE 'char%'
character_set_client    utf8
character_set_connection    cp1251
character_set_database    cp1251
character_set_filesystem    binary
character_set_results    utf8
character_set_server    cp1251
character_set_system    utf8
character_sets_dir    C:\web\MySQL Server 5.1\share\charsets\

Почему ошибка выскакивает?
В БД 2 таблицы, пустые, без данных.

2

Re: ОШИБКА #1366 - Incorrect string value: '\xC2\xC0\xD

DEFAULT CHARSET=cp1250 - Здесь ошибка. Необходимо исправить кодировку таблиц на cp1251.

Проследите также, чтобы файл скрипта был в ANSI, не в UTF8. Это можно посмотреть практически в любом текстовом редакторе, например в Notepad++.

3

Re: ОШИБКА #1366 - Incorrect string value: '\xC2\xC0\xD

Hanut сказал:

DEFAULT CHARSET=cp1250 - Здесь ошибка. Необходимо исправить кодировку таблиц на cp1251.

Проследите также, чтобы файл скрипта был в ANSI, не в UTF8. Это можно посмотреть практически в любом текстовом редакторе, например в Notepad++.

Спасибо за отклик!))
Hanut,
подскажите, пожалуйста, мне как новичку )))

Я правильно понимаю, что кодировка таблиц это то, что указано в поле "Сравнение" в PhpMyAdmin?
Или не правильно?

Этот запрос я пишу не в файле, а в поле на странице SQL в PhpMyAdmin ))

По поводу кодировки, я зашел под rootом, выбрал БД, выбрал закладку Операции и в низу окна в раскрывающемся списке "Сравнение" выбрал cp_1251_general_cs.
Потом под другим пользователем выполнил запрос INSERT INTO .... - результат тот же )))

4

Re: ОШИБКА #1366 - Incorrect string value: '\xC2\xC0\xD

Kaanr
У MySQL есть кодировки уровня базы данных, таблиц и даже отдельных полей.

Сравнение - это частный вид кодировки. cp1251 - это в сравнении кодировка, а все, что дальше general_ci - это уже сравнение (в данном случае регистронезависимое).

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

5

Re: ОШИБКА #1366 - Incorrect string value: '\xC2\xC0\xD

Hanut сказал:

Kaanr
У MySQL есть кодировки уровня базы данных, таблиц и даже отдельных полей.

Сравнение - это частный вид кодировки. cp1251 - это в сравнении кодировка, а все, что дальше general_ci - это уже сравнение (в данном случае регистронезависимое).

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

Вроде я нашел ошибку. Вот здесь она:
CREATE TABLE IF NOT EXISTS `categories` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(20) CHARACTER SET cp1250 NOT NULL,
  `file` tinyint(1) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `namefile` (`name`,`file`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
Вероятно, я не изменил кодировку еще и для поля))))
Я для таблицы изменил, а для полей походу нет))))

6

Re: ОШИБКА #1366 - Incorrect string value: '\xC2\xC0\xD

Kaanr сказал:
Hanut сказал:

Kaanr
У MySQL есть кодировки уровня базы данных, таблиц и даже отдельных полей.

Сравнение - это частный вид кодировки. cp1251 - это в сравнении кодировка, а все, что дальше general_ci - это уже сравнение (в данном случае регистронезависимое).

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

Вроде я нашел ошибку. Вот здесь она:
CREATE TABLE IF NOT EXISTS `categories` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(20) CHARACTER SET cp1250 NOT NULL,
  `file` tinyint(1) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `namefile` (`name`,`file`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
Вероятно, я не изменил кодировку еще и для поля))))
Я для таблицы изменил, а для полей походу нет))))


Тоже было такое. В одном поле таблицы указал cp1251, а в другом cp1250. Потом русские буквы стали ??????.
Теперь ошибку исправил. Спасибо, помог твой пост.