| |
|
|
| | Значит вопрос такой.
Кодировка базы cp1251. Записи кооторые я ввожу на русском в самом мускуле, в билдере выходят абракадаброй. И наоборот, если вводить записи на русском в Билдере, то он их потом читает коректно, но в самой базе просмотреть их не получается. Вот такое вот везде - "???????????". Обьяните пожайлуста новичку где собака зарыта. И еще один вопрос в догонку. Есть варчарное поле длиной 200. Кодировка таблицы - cp1251, колейт - cp1251_general_ci. Ввожу строку на русском в билдере - получаю ошибку о том что строка слишком длинная (хотя по факту там одно слово). С английским проблем не возникает. Меняю кодировку и колейт на латин - все работает для обоих языков. Как это обьяснить?
Заранее спасибо за любой ответ | |
| |
|
|
| |
|
|
| |
для: meskallito
(06.12.2006 в 19:33)
| | | Сразу после того как устанавливаете соединение с базой данных, выполняйте запрос
который установит кодировку соединения. Возможно вас также заинтересует статья http://www.st-host.ru/help/index.php?id_article=14, где этот вопрос рассматривается более подробно. | |
| |
|
|
| |
|
|
| |
для: cheops
(06.12.2006 в 21:02)
| | | Спасибо, с этим вроде разобрался.
Теперь другой вопрос. Делаю запрос к базе в ADOQuery, выдает такую ошибку:
Illegal mix of collations (cp1251_general_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '='
Запрос формируется динамически, но если его прописать вручную в свойствах ADOQuery, то работает без проблем. В чем может быть проблема? | |
| |
|
|
| |
|
|
| |
для: meskallito
(08.12.2006 в 16:10)
| | | Таблицы и столбцы в ней должны иметь кодировку по умолчанию cp1251, а не latin1. | |
| |
|
|
| |
|
|
| |
для: cheops
(08.12.2006 в 20:41)
| | | В том то и дело что и для базы и для таблиц и для колонок кодировка прописана как ср1251. Может это чето билдеровское. Этот же запрос нормально работает если ввести его вручную. | |
| |
|
|
| |
|
|
| |
для: meskallito
(08.12.2006 в 22:54)
| | | Хм... приведите пожалуйста запрос, который приводит к этой ошибке? | |
| |
|
|
| |
|
|
| |
для: cheops
(09.12.2006 в 00:07)
| | | SELECT * FROM books_fund WHERE section in (SELECT section_id FROM sections WHERE section_name IN (
'Раздел 1','Раздел 2'
) ); | |
| |
|
|
| |
|
|
| |
для: cheops
(09.12.2006 в 00:07)
| | | Только что заметил, что помогает та же строчка, которую вы мне дали в первом посте. Прямо перед открытием ADOQuery. Неужто прийдетса ее везде тыкать :) | |
| |
|
|
| |
|
|
| |
для: meskallito
(09.12.2006 в 02:04)
| | | Рано радовался. Ошибок нет, но результата запроса тоже. Кошмар :( | |
| |
|
|
| |
|
|
| |
для: meskallito
(09.12.2006 в 02:04)
| | | Эта строка должна по идеи втыкаться после каждого соединения с сервером базы данных. А у вас для таблиц по умолчанию кодировка cp1251 или latin1 выставлена? Нужно чтобы везде было установлено cp1251. | |
| |
|
|
| |
|
|
| |
для: cheops
(09.12.2006 в 13:46)
| | | По умолчанию cp1251. Заметил такую особенность. Вот есть участок кода который засовывает запрос в ADOQuery и активирует его. Так вот первый раз при старте программы этот участок кода проходит нормально, результаты запроса видны на экране. А если вызывать его чуть позже кнопкой, то получаю ошибку. Для соединения стоит галочка KeepConnected. Если ее убрать и устанавливать каждый раз новое соединение перед этим участком (вместе с set names), то первый раз все ок, как обычно, а дальше я получаю ровным счетом ничего. Не ошибок не результатов запроса. | |
| |
|
|