Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ошибка incorrect string value:'\x81\xAE\xA3\xA4\xA0\xAD'for column 'name'
 
 автор: Богданн   (15.06.2011 в 18:26)   письмо автору
 
 

Народ, прописыавя вот такой код в Mysql

insert into table set
name="Вася",
sname="Пупкин",
a_litle_story="Текст керилицей длинной под tinytext";

получаю ошибку
incorrect string value:'\x81\xAE\xA3\xA4\xA0\xAD'for column 'name' at row 1
default charset для таблице у меня cp1251почему ошбика вылетает не знаю,хэлп плз.

  Ответить  
 
 автор: cheops   (15.06.2011 в 18:54)   письмо автору
 
   для: Богданн   (15.06.2011 в 18:26)
 

Сразу после установки соединения с MySQL задается кодировку соединения?
<?php
  mysql_query
("SET NAMES cp1251");
?>

  Ответить  
 
 автор: Богданн   (15.06.2011 в 19:28)   письмо автору
 
   для: cheops   (15.06.2011 в 18:54)
 

я это прописываю в командной утилите mysql

  Ответить  
 
 автор: cheops   (15.06.2011 в 20:12)   письмо автору
 
   для: Богданн   (15.06.2011 в 19:28)
 

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

PS Кстати, я заметил вы пользуетесь консольным mysql, это намерено или вынуждено? Не хотите перейти на более удобный клиент, например, phpMyAdmin?

  Ответить  
 
 автор: Богданн   (15.06.2011 в 20:23)   письмо автору
 
   для: cheops   (15.06.2011 в 20:12)
 

Это преднамерено, просто когда я начал учить пхп, а конкретно его взаимодействие с MYSQL,то увидел что взаимодействие пхп с MYSQL осуществляеться через функции php, языком sql,а командная строка как раз та среда где привыкаеш к языку sql.
В phpmyadmin я перейду как только почуствую себя уверено в sql,ведь phpmyadmin это автоматизация работы.

  Ответить  
 
 автор: Богданн   (16.06.2011 в 12:29)   письмо автору
 
   для: cheops   (15.06.2011 в 20:12)
 

Спасибо, помогло только я cp1251 поставил, а что это за команда set names??? это один из наборов спец команд регулируещих настройки mysql??

  Ответить  
 
 автор: cheops   (16.06.2011 в 12:37)   письмо автору
 
   для: Богданн   (16.06.2011 в 12:29)
 

>Спасибо, помогло только я cp1251
Хм... странно, тогда перед использованием mysql, нужно консоль переключать в win-1251 при помощи команды
chcp 1251

>что это за команда set names??? это один из наборов спец команд регулируещих настройки
>mysql??
Она регулирует кодировку в которой будут обмениваться клиент и сервер. Т.е. у вас на сервере данные могут лежать в какой угодно кодировке, например, UTF-8, присоединяясь к серверу, вы при помощи SET NAMES говорите, хочу обмениваться данными в кодировке, например, Windows-1251. После этого сервер, при получении от вас данных автоматически перекодирует их из Windows-1251 в UTF-8, а при отправке вам данных наоборот из UTF-8 в Windows-1251. Только нужно каждый раз сообщать ему, в какой кодировке вы хотите общаться, иначе он будет работать в latin1 (MySQL родом из Швеции).

  Ответить  
 
 автор: Богданн   (16.06.2011 в 12:47)   письмо автору
 
   для: cheops   (16.06.2011 в 12:37)
 

Тоесть, каждый раз после соидинения с mysql надо прописывать set names cp2151,а что б это по-умалчанию ставилось нельзя настроить??
А кодировку для базы данных,таблици и столбца тоже надо ставить или можно прописать set names cp1251 а для базы данных оставить latin1??

  Ответить  
 
 автор: cheops   (16.06.2011 в 13:04)   письмо автору
 
   для: Богданн   (16.06.2011 в 12:47)
 

>Тоесть, каждый раз после соидинения с mysql надо прописывать set names cp2151,а что б это
>по-умалчанию ставилось нельзя настроить??
Вы же mysql_connect() каждый раз пишите, когда хотите установить соединение, почему бы там же не устанавливать кодировку :) Как правило это один файл на все приложение и одна дополнительная строка? Да нужно писать каждый раз, или перекомпилировать MySQL (может сейчас и настройка какая-то есть, но лучше не полагаться на неё - везде разные сервера, настройки у них разные, чтобы ваше приложение было устойчивым, лучше всякий раз явно указывать кодировку).

  Ответить  
 
 автор: Богданн   (16.06.2011 в 13:14)   письмо автору
 
   для: cheops   (16.06.2011 в 13:04)
 

спасибо

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования