Delphi + MySQL - проблема !!!

Статус
Закрыто для дальнейших ответов.

logist

New member
Регистрация
08.12.2004
Сообщения
28
Реакции
5
Баллы
3
Возраст
49
Местоположение
украина
Вопрос к специалистам - какую кодировку нужно поставить на сервере - что-бы Delphi в запросах нормально понимал русские буквы - а то получается
help.jpg

ищу контекст 'проба' а нахожу все с содержанием 'орова' ???
 

Requiem

Member
Регистрация
15.11.2004
Сообщения
88
Реакции
2
Баллы
8
Возраст
41
Для начало тебе нужно разобраться что такое кодировка.....
Тут дело не в кодировке... Выкинь кусок кода, где у тебя происходит обработка вводимых данных/запроса, отсылка запроса и все, используемые при этом функции/процедуры... Скорее всего баг где-то там.
Только обязательно с коментами...
 

logist

New member
Регистрация
08.12.2004
Сообщения
28
Реакции
5
Баллы
3
Возраст
49
Местоположение
украина
Текст запроса показан - а текст процедуры очень простой:
Отключаю SQL, очищаю строку запроса, прописываю новый запрос, включаю SQL.
Строка запроса видна на "скриншоте".
Дело в кодировке на сервере и в приложении. Как их синхронизировать?
 

massacre

New member
Регистрация
01.02.2004
Сообщения
9
Реакции
3
Баллы
3
Возраст
45
Местоположение
Россия. Мирный
Если честно у меня на MySQL стоит кодировка latin1 и вообщем то нет ни каких проблем с стыковкой в Delphi
попробуй методом научного тыка cp1251
хотя не знаю не сталкивался с такими поблеммами.
А синхронизировать кодировки хм интересно, есть ли в этом вообще смысл ?
 

Requiem

Member
Регистрация
15.11.2004
Сообщения
88
Реакции
2
Баллы
8
Возраст
41
Немного о кодировках... Что оно собою представляет изнутри?
В двух словах мы имеем таблицу, в которой просто описывается как рисовать символ под номером N.
Но машина оперирует номерами символов, а не самими символами, так что ей абсолютно пофигу на то, какая кодировка используется, ведь 2=2 в любом случае.
 

logist

New member
Регистрация
08.12.2004
Сообщения
28
Реакции
5
Баллы
3
Возраст
49
Местоположение
украина
Для Requiem:
Не совсем согласен - в книге по MySQL описано не так ..

MySQL - Поль Дюбуа Второе издание стр.163.

"Вот пример отображения строк в кодировке latin1_de и utf8
_latin1_de 'abc'
_utf8 'def' "
и там дальше по тексту описывается что для латиныци это может и не иметь значения - а для кириллици .... оччень даже имеет
 
Последнее редактирование модератором:

Requiem

Member
Регистрация
15.11.2004
Сообщения
88
Реакции
2
Баллы
8
Возраст
41
"Вот пример отображения строк в кодировке latin1_de и utf8
_latin1_de 'abc'
_utf8 'def' "

Правильно и в этом случае 'abc'='def'. (Понятно что к какой кодировке относится)
Т.е. для тебя оно вроде и не равно, но для машины равно, поскольку с другой стороны 'abc' представляет собой массив из трех элементов, которые равны допустим 1,2,3. Так же и 'def'=1,2,3.
'abc' и 'def' - это то, что видишь ты, а комп в обоих этих случаях увидит 1,2,3

Хотя... Ввод же происходит в соответствии с установленной кодировкой... Хм, я бы на твоем месте попробовал для теста ввести запрос англ. символами и проверить правильно ли оно все работает, возможно, дело, действительно, в кодировке.
 
Последнее редактирование модератором:

logist

New member
Регистрация
08.12.2004
Сообщения
28
Реакции
5
Баллы
3
Возраст
49
Местоположение
украина
Английскими символами работает все нормально.
А как ты объясниш тот факт что если я меняю кодировку на сервере на latin1 тогда он слово "проба" не находит вообще (его в принципе нет в справочнике) а на запрос "проб" - отбирает все записи с контекстом "пров". Случай описаный вначале был с кодировкой cp1250.
Разве это не и за кодировки?
 

Requiem

Member
Регистрация
15.11.2004
Сообщения
88
Реакции
2
Баллы
8
Возраст
41
Разве это не и за кодировки?
Из-за кодировки :).
Только бок не в самом сервере MySQL, а в том, что сама твоя база данных была набита с использованием другой кодировки(скорее всего совсем другой прогой).
Посему вопрос "какую кодировку нужно поставить на сервере" звучит немного глупо, поскольку база данных просто хранит данные(без каких либо изменений), а выставить кодировку можно разве только для их отображения пользователю.
 

logist

New member
Регистрация
08.12.2004
Сообщения
28
Реакции
5
Баллы
3
Возраст
49
Местоположение
украина
Из-за кодировки :).
Только бок не в самом сервере MySQL, а в том, что сама твоя база данных была набита с использованием другой кодировки(скорее всего совсем другой прогой).
Посему вопрос "какую кодировку нужно поставить на сервере" звучит немного глупо, поскольку база данных просто хранит данные(без каких либо изменений), а выставить кодировку можно разве только для их отображения пользователю.

Набиваю в той же программе открыл два грида в одном обращение к запросу в другом напрямую к таблице. Добавляю в таблицу значения - потом запросом их обрабатываю - результат тот-же ГДЕ ГРАБЛИ !!!!!!

help1.jpg
 
Последнее редактирование модератором:

Requiem

Member
Регистрация
15.11.2004
Сообщения
88
Реакции
2
Баллы
8
Возраст
41
... резултат тот-же ГДЕ ГРАБЛИ !!!!!!
Ну тогда даже не знаю...
Я склонен думать, что в твоей проге есть некий БАГ.
И что-то не совсем понятна фраза "в одном обращение к запросу в другом напрямую к таблице".
 

logist

New member
Регистрация
08.12.2004
Сообщения
28
Реакции
5
Баллы
3
Возраст
49
Местоположение
украина
УРААААААААА поборол.
Спасибо всем кто не оставался равнодушным к моей теме.
Выставил на MySQL кодировку везде utf8_general_ci
А в MyDAC -> Options -> Charset -> cp1251 и все заработало - и скажите после этого что не из за кодировки.
 

Requiem

Member
Регистрация
15.11.2004
Сообщения
88
Реакции
2
Баллы
8
Возраст
41
Ну что я могу сказать.... Что-то тут неправильно(либо прикладной софт либо прога автора)... Нормальная программа так работать не должна.
В любом случае тебе придется еще порешать этот вопрос, поскольку рядовой юзер(на которого по сути программа и расчитана) не будет колупаться в настройках MySQL или еще чего-то.
 
Регистрация
09.12.2004
Сообщения
6
Реакции
0
Баллы
1
Возраст
50
Местоположение
Кировоград
Ну что я могу сказать.... Что-то тут неправильно(либо прикладной софт либо прога автора)... Нормальная программа так работать не должна.
В любом случае тебе придется еще порешать этот вопрос, поскольку рядовой юзер(на которого по сути программа и расчитана) не будет колупаться в настройках MySQL или еще чего-то.

Копаться рядовому юзеру и не надо - админ устанавливает сервер - а программа настроена уже под конкретный сервер - рядовой пользоватеь только юзает прогу, в которой все настройки прописаны, а аффтор - он же я так понимаю и админ - сам настроит сервер для нормальной работы юзеров ;-)
 

romkau2

New member
Регистрация
25.03.2014
Сообщения
5
Реакции
0
Баллы
1
вот у меня почему база утф8 и если поставить кодаровку в утф8 то данные возвращаются в человеческом виде а текст который использую в конкате то он в абракадабре(( не понятно почему
 

neorad

New member
Регистрация
27.11.2009
Сообщения
4
Реакции
0
Баллы
1
Возраст
41
MyDAC -> Options -> Charset -> cp1251

Во первых не совсем правильно, если база будет доступна из интернета, например для странички, то глюки будут. Лучше всего перевести на UTF
mydac ломанный ? Скорее всего нужно обновить.

По своему опыту достаточно adoquery, никаких проблем с кодировкой и компанентами не возникает.

Добавлено через 3 минуты
вот у меня почему база утф8 и если поставить кодаровку в утф8 то данные возвращаются в человеческом виде а текст который использую в конкате то он в абракадабре(( не понятно почему

Покажи код
 
Последнее редактирование модератором:

GuardianFree

New member
Регистрация
10.08.2011
Сообщения
4
Реакции
0
Баллы
1
всегда используйте UTF8, это позволит избежать таких ошибок и создаст возможность для развития приложения и выхода на зарубежные рынки
 

victorsmail

New member
Регистрация
28.09.2013
Сообщения
7
Реакции
0
Баллы
1
проще в строке подключения добавить "STMT=SET CHARACTER SET cp1251;" или utf8 смотря в каких случаях.
 

codebs

New member
Регистрация
29.10.2010
Сообщения
7
Реакции
4
Баллы
3
Cahrset is simple solution

My recommendation is to use utf8_general_ci collation for database. I have problems with Serbian charset and correct showing letters.
 

sikancil

New member
Регистрация
20.10.2011
Сообщения
17
Реакции
0
Баллы
1
Noted. Good option with specific charset.
 

qpash

New member
Регистрация
15.01.2011
Сообщения
11
Реакции
0
Баллы
1
На SQL 2012 у меня нет проблем не с кодировкой, не с кириллицей
 

leo_nt

New member
Регистрация
02.11.2007
Сообщения
8
Реакции
0
Баллы
1
всегда и везде юзаю ср1251 (с обоих сторон)... никогда не подводит...
 
Статус
Закрыто для дальнейших ответов.
198 157Темы
635 128Сообщения
3 618 411Пользователи
Semifistokl22Новый пользователь
Верх