Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi+TADOConnection: проблема кодировки, Incorrect string value: '\xD0\xA2\xD0\.. 
V
    Опции темы
psyco
Дата 13.5.2010, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 6.12.2008

Репутация: нет
Всего: нет



Добрый день! Есть БД на MySQL Server 5.1. В Delphi подключаюсь к ней с помощью TADOConnection(в общем это не важно, так как работа с БД происходит без ошибок). Пытаюсь добавить данные в таблицу на русском языке и выбивает всем Вам извесная ошибка:  "Incorrect string value: '\xD0\xA2\xD0\xB5\xD0\xBA...' for column ...". Начал искать решение, вот что я сделал:
1.Настроил файл my.ini как описано в этой статье Статья
2.Изменял кодировки на cp1251 и на utf8
3.Всегда проверял с помощью sql-запроса установленные кодировки: 
Код
show variables like ‘char%’

4.
Код
SET NAMES cp1251

5.
Код
SET NAMES utf8

6.Пробовал вставлять данные на русском с помощью клиента Navicat Lite - та же ошибка "Incorrect string value: '\xD0\xA2\xD0\xB5\xD0\xBA...' for column ..."
Вставляю данные в виде: INSERT INTO department(dep_name) VALUES('Отдел1'); 
Привожу в пример свой настроенный файл my.ini:
Код

[client]
default-character-set=utf8
port=3306

[mysql]

default-character-set=utf8

[mysqld]

port=3306

basedir="C:/Program Files/MySQL/MySQL Server 5.1/"

datadir="C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.1/Data/"

default-character-set=utf8

character_set_server=utf8

collation-server=utf8_general_ci

init-connect="SET NAMES utf8"

skip-character-set-client-handshake

default-storage-engine=INNODB

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

max_connections=100

query_cache_size=0

table_cache=256

tmp_table_size=18M

thread_cache_size=8

Помогите мне с решением, буду благодарен любой помощи.
PM MAIL   Вверх
skyboy
Дата 13.5.2010, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



не надо мучать конфиг.
для того, чтоб работать с данными в UTF-8 должно быть достаточно: 
  • у поля таблицы при создании указываешь character set=utf8
  • при подключении выполняешь первым делом SET NAMES utf8
  • формируешь и передаешь данные из приложения действительно в utf8
если с последним проблема(не знаю, как у современных версий delphi с unicode-строками), то на втором шаге делаешь set names cp1251 и передаешь данные именно в этой кодировке.
и не надо сначала один set names ставить, а затем - другой. не надо мучать конфиг. только параметры подключения.
если это не поможет, то я лучше перекину в "Delphi: базы данных и репортинг", а то вдруг окажется, что ADO не дает отпработать SET NAMES, а кодировку надо указывать в параметрах объекта подключения.
PM MAIL   Вверх
psyco
Дата 14.5.2010, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 6.12.2008

Репутация: нет
Всего: нет



Спасибо Вам за помощь, я наконец-то добил эту проблему, хоть до конца и не понимаю как. Через клиент Navicat я изменил параметр Character set моей БД, всех таблиц и полей на cp1251(через командную строку MySQL мне кажется он не сохранялся, или работал не коректно). И еще, что кстати не менее важно - при подключении к БД в среде Delphi в конце строки подключения я указал: "charset=cp1251;". Видимо, подключаясь, Delphi использует свою стандартную кодировку(может быть latin1(?)). И теперь я без проблем додаю данные на русском и отображаю их.
Спасибо Вам, skyboy, за то, что откликнулись!
PM MAIL   Вверх
malor
  Дата 10.9.2011, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 632
Регистрация: 17.11.2006

Репутация: нет
Всего: нет



Цитата(psyco @  14.5.2010,  23:02 Найти цитируемый пост)
 И еще, что кстати не менее важно - при подключении к БД в среде Delphi в конце строки подключения я указал: "charset=cp1251;".


user posted image
Вы здесь указали?

У меня в Delphi XE такие вещи:
user posted image
Загружал в комбобокс из базы.
Если сделать в cmd-консоли SELECT-выборку, то отобразится кириллица нормально.
В SQL-Front - каракули.
 
my.ini
[mysql]
default-character-set=cp1251


Что предпринять браза?

MySQL 5.5, SQL-Front 5.1

P.S. Похожие темы:
MySQL выдает иероглифы вместо русских букв
Проблема с кодировкой Mysql! DBexpress, delphi7
MySQL5, Delphi7, utf8, В проге показываются каракули
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0673 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.