Крякозябры... Как бороться?

ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
optron
Активист
Сообщения: 114
Зарегистрирован: 29 Март 2006, 10:53
Откуда: Саранск
Контактная информация:

Крякозябры... Как бороться?

Сообщение optron »

День добрый.

C55,
MySql 5.1.40-community,
ODBC - 5.2w Driver.
Тип таблиц - MyIsam

Мучаюсь с кодировками и ничего не выходит - в мускуле всё по русски, в клаше выводится в виде ???????-??????
Пробовал utf8_general_ci, cp1251_general_ci, но никак.
Интересно вот что - если базу цепляю АБС шаблонами, то в бровзе выводится по русски, но перемешано в кашу. Допустим, имеется таблица:

Код: Выделить всё

SprDeb               FILE,DRIVER('ODBC'),OWNER(glo:owner),NAME('sprdeb'),PRE(Spr),BINDABLE,THREAD
PRIMARY                  KEY(Spr:Deb),PRIMARY
Record                   RECORD,PRE()
Deb                         STRING(20),NAME('Deb')
Prim1                       STRING(40),NAME('Prim1')
Prim2                       STRING(40),NAME('Prim2')
Prim3                       STRING(40),NAME('Prim3')
Prim4                       STRING(40),NAME('Prim4')
Prim5                       STRING(40),NAME('Prim5')
                         END
                     END                       
В DEB - числовое поле.
В Prim1 имеются русские примечания, Prim2 ... Prim5 - пустые.
Так вот в бровсе примечания могут перейти из Prim1 в другие Prim-ы.
Это в стандартных АБС шаблонах.
Вывожу через очередь ручками, как описывал Андрей Попов - в итоге ??????????????
Пытаюсь добавлять запись в АБС - в cp1251_general_ci добавляется корректно, но через очередь опять таки ????????
Пытаюсь добавлять запись в АБС - в utf8_general_ci - латиницей добавляется, кириллицей не добавляется вообще.

Куда копать? То ли драйвер использовать ниже версии, то ли в мускул команду какую слать?

Да, имеется еще в наличии официальная клаша-8, может в ней сия проблема побеждена?
Заранее спасибо.
Аватара пользователя
morkovin
Ветеран
Сообщения: 908
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

Re: Крякозябры... Как бороться?

Сообщение morkovin »

У меня
С6.2 ABC
mysql-installer-5.5.21.0
mysql-connector-odbc-3.51.30-win32
cp1251_general_ci
Все норм. работает
C55,
MySql 5.1.40-community,
ODBC - 5.2w Driver.
Тип таблиц - MyIsam
WBR, morkovin
Аватара пользователя
morkovin
Ветеран
Сообщения: 908
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

Re: Крякозябры... Как бороться?

Сообщение morkovin »

Пытаюсь добавлять запись в АБС - в utf8_general_ci - латиницей добавляется, кириллицей не добавляется вообще
Файл *.env используешь?
У меня было такое: без env и с единственным ключем(строковым) записи не отображались в броусе, но присутствовали в БД.
WBR, morkovin
optron
Активист
Сообщения: 114
Зарегистрирован: 29 Март 2006, 10:53
Откуда: Саранск
Контактная информация:

Re: Крякозябры... Как бороться?

Сообщение optron »

Дружище, я насчет *.енв вообще не в курсе.Так получилось, что начал смотреть из тпс в мускул в самое последнее время. Слушай, а не сложно будет рабочую апп-шку сбросить на optron2@rambler.ru. Просто начинаю разбирать связку мускула и тпс и азы пока не идут. Для всех остальных - тоже - если не сложно, то плиз пример работающей программы, где клаша хорошо работает с мускулом.
optron
Активист
Сообщения: 114
Зарегистрирован: 29 Март 2006, 10:53
Откуда: Саранск
Контактная информация:

Re: Крякозябры... Как бороться?

Сообщение optron »

Вот, кстати, распечатка с55ее.env файла:

Код: Выделить всё

! Default Env file for C55EE.EXE
CLACHARSET=Cyrillic
CLASYSTEMCHARSET=204
CLACOLSEQ=
CLADIGRAPH=
CLACASE=WINDOWS
CLAMON=
CLAMONTH=
CLAAMPM=
CLAMSG=
CLABUTTON=
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Re: Крякозябры... Как бороться?

Сообщение gopstop2007 »

В таблицах посмотрите в Font-е какой набор символов стоит, должен стоять Кирилический.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
optron
Активист
Сообщения: 114
Зарегистрирован: 29 Март 2006, 10:53
Откуда: Саранск
Контактная информация:

Re: Крякозябры... Как бороться?

Сообщение optron »

gopstop2007 писал(а):В таблицах посмотрите в Font-е какой набор символов стоит, должен стоять Кирилический.
Да вроде бы везде ставлю MS San Serif. Проблем пока не было с ним. Ну и в Main-е при запуске ставлю

Код: Выделить всё

system{prop:charset}=charset:cyrillic
SYSTEM{PROP:FontCharSet + PROP:TipsFont} = CHARSET:CYRILLIC
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Re: Крякозябры... Как бороться?

Сообщение gopstop2007 »

на сервере MySQL, на самой базе и в используемой таблице, чтобы стоял CHARSET=cp1251
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
optron
Активист
Сообщения: 114
Зарегистрирован: 29 Март 2006, 10:53
Откуда: Саранск
Контактная информация:

Re: Крякозябры... Как бороться?

Сообщение optron »

СтоИт. в My.cnf

Код: Выделить всё

default-character-set = cp1251
init-connect = "set names cp1251"
База cp1251
Таблица cp1251
Все поля cp1251
Аватара пользователя
morkovin
Ветеран
Сообщения: 908
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

Re: Крякозябры... Как бороться?

Сообщение morkovin »

на сервере MySQL, на самой базе и в используемой таблице, чтобы стоял CHARSET=cp1251
добавь и в свойствах ODBC тоже

Выслал пример(но он для С6.2 и APP не откроется в С55)

А вот обычный ENV-файл для проги (YourProgName.env)

Код: Выделить всё

CLACASE="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ","абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
CLABUTTON="&Ok","&Да","&Нет","&Завершить","&Вернуться","&Игнорировать","&Отменить","&Справка"
CLACOLSEQ="AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZzАаБбВвГгДдЕеЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЬьЪъЫыЭэЮюЯя"
CLAMSG2="Файл не найден"
CLAMSG3="Путь не найден"
CLAMSG4="Слишком много открытых файлов"
CLAMSG5="Доступ запрещен"
CLAMSG7="Неисправность памяти"
CLAMSG8="Недостаточно памяти"
CLAMSG15="Неправильно указан диск"
CLAMSG16="Зарегистрирована неизвестная ошибка"
CLAMSG30="Элемент не найден"
CLAMSG32="Файл уже заблокирован"
CLAMSG33="Запись недоступна"
CLAMSG35="Запись не найдена"
CLAMSG36="Ошибка в файле данных"
CLAMSG37="Файл не открыт"
CLAMSG38="Нарушен ключевой файл"
CLAMSG40="Запись с таким ключом уже есть"
CLAMSG43="Запись уже захвачена"
CLAMSG45="Неправильное имя файла"
CLAMSG46="Надо перестроить ключевые файлы"
CLAMSG47="Неправильное описание файла"
CLAMSG48="Не могу вести протокол транзакции"
CLAMSG52="Файл уже открыт"
CLAMSG53="Файл базы разрушен"
CLAMSG54="У файла нет атрибута CREATE"
CLAMSG55="Файл надо открыть в совместном режиме"
CLAMSG56="LOGOUT активен"
CLAMSG57="Ошибка в файле примечаний"
CLAMSG63="Требуется монопольный доступ"
CLAMSG64="Нарушение совместного режима"
CLAMSG65="Не могу отменить транзакцию"
CLAMSG73="Memo File is Missing"
CLAMSG75="Неверный описательтипа поля"
CLAMSG76="Неправильная строка для индексации"
CLAMSG77="Не могу получить доступ к индексу"
CLAMSG78="Неправильное число параметров"
CLAMSG79="Неподдерживаемый типа данных в файле"
CLAMSG80="Эта функция не поддерживается"
CLAMSG81="Зарегистрирована неизвестная ошибка"
CLAMSG88="Слишком длинное поле ключа"
CLAMSG89="Запись изменена другой станцией"
CLAMSG90="Ошибка файловой системы"
CLAMSG91="Система поддержки транзакций не активна"
CLAMSG92="Ошибка в функции построения ключей"
CLAMSG93="Функция построения ключей прервана"
CLAMSG94="Превышение ограничения записи"
CLAMSG800="Некорректное выражение в формуле"
CLAMSG801="Не найдена переменная в формуле"
WBR, morkovin
optron
Активист
Сообщения: 114
Зарегистрирован: 29 Март 2006, 10:53
Откуда: Саранск
Контактная информация:

Re: Крякозябры... Как бороться?

Сообщение optron »

Если честно, то ничего не понял. Нужны азы - подсоединился, считал, обработал...
А в Вашем примере - как то всё запутано и непонятно.Вероятно, я лох.

И еще - в файле динстр.инк естьметоды - сат, ... и другие как узнать что они делают?
Где мобыть описано?
Аватара пользователя
morkovin
Ветеран
Сообщения: 908
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

Re: Крякозябры... Как бороться?

Сообщение morkovin »

А в Вашем примере - как то всё запутано и непонятно
Не понял о каком примере речь? В моём все сгенерировано станд. АВС шаблонами.
динстр.инк естьметоды - сат
см. выше. Не нашёл.
Всё что нужно - прописать в словаре в строке Owner имяБД, юзер, пароль
(или заполнить glo:owner)
см. аттач
Вложения
Документ.zip
(56.79 КБ) 324 скачивания
WBR, morkovin
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Re: Крякозябры... Как бороться?

Сообщение Yufil »

Давно это было, сейчас и не найду...
Были кракозябли при чтении базы мускула.
Я в методы Access:File.Open после открытия файла ставил несколько строк типа
Self.File{prop:SQL} = 'set .... cp1251'

Яндекс мне вывалил:

SET character_set_clien cp1251
SET character_set_connection cp1251
SET character_set_database cp1251
SET character_set_results cp1251
SET character_set_server cp1251

В общем, некоторое количество команд, введённых через Prop:SQL после открытия, помогли,
но детали съел прогрессирующий склероз :(
optron
Активист
Сообщения: 114
Зарегистрирован: 29 Март 2006, 10:53
Откуда: Саранск
Контактная информация:

Re: Крякозябры... Как бороться?

Сообщение optron »

В общем, непонятна причина возникновения этой проблемы, а исправилось это так:

Изначально БД и таблицы создавались в кодировке cp1251 general ci
Стандартный бровз читал их в нормальной кодировке, а вот при выводе данных в очередь и её просмотре были знаки вопроса.

Ладно, перебил все таблицы в Мускуле в UTF8, установил сравнения на базу, на таблицы, прописал сравнения в cnf файле мускуля, установил utf8 в ODBC.
Теперь информация стала приходить в виде 2-битных крякозябр.

Начал танцы с бубнами с env файлом, забрасыванием сетов в мускуль:

Код: Выделить всё

!  sqlfile{prop:SQL} ='SET NAMES utf8'
!  if errorcode() then message(FILEERRORCODE()).
!  sqlfile{prop:SQL} ='SET character_set_client=utf8'
!  if errorcode() then message(FILEERRORCODE()).
!  sqlfile{prop:SQL} ='SET character_set_connection=utf8'
!  if errorcode() then message(FILEERRORCODE()).
!  sqlfile{prop:SQL} ='SET character_set_database=utf8'
!  if errorcode() then message(FILEERRORCODE()).
!  sqlfile{prop:SQL} ='SET character_set_server=utf8'
!  if errorcode() then message(FILEERRORCODE()).
Бесполезно. Затем, снова перевел базы, cnf, ODBC в cp1251 general ci и о, чудо, заработало.
Убираю все сеты - работает.
Убираю env файл - работает.
Понимаю, что, какое то тут лошарничество с моей стороны, но вот какое - не соображу.
Ответить