powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ADO MySql Odbc [stored procedure] кракозябры
16 сообщений из 16, страница 1 из 1
ADO MySql Odbc [stored procedure] кракозябры
    #39973220
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, столкнулся с проблемой отображения результата вывода параметра сохраненной процедуры в MySql .
выскакивают знакомые кракозябры , но побороть не могу) Все кодировки и на сервере и на стороне клиента VBA utf-8

Очень простая процедура, которая имеет один выходной параметр типа varchar и на выходе отдает 'Tritatushechki Tata'
Код: sql
1.
2.
3.
4.
5.
6.
DELIMITER $$
CREATE  PROCEDURE `TEST`(OUT `MyParam` VARCHAR(255) CHARSET utf8)
BEGIN  
    SET `MyParam` = 'Tritatushechki Tata';  
END$$
DELIMITER ;


После создания можно проверить на сервере MySql , все работает и выводит:
Код: sql
1.
2.
CALL TEST(@MyValue);
SELECT @MyValue



А вот на стороне клиента проблемки:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Dim conn As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs As ADODB.Recordset
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.ConnectionString = "DRIVER={MySQL ODBC 8.0 unicode driver};SERVER=localhost;DATABASE=db_shop;user=test;password=test;charset=utf8;Option=3;"
conn.Open
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn 
cmd.CommandType = adCmdStoredProc 
cmd.CommandText = "TEST" 
cmd.Parameters.Append cmd.CreateParameter("MyParam", adVarChar, adParamOutput, 255)
'даже такой комбо не спасает -- >
Set rs = cmd.Execute("SET character_set_client='utf-8';SET character_set_results='utf-8';SET character_set_connection='utf-8'")
'<--
MsgBox rs.Fields("MyParam")
rs.Close
Set rs = Nothing
conn.Close



Вылетают кракозябры типа ??????? C числами проблем нет выводятся как надо, а вот с текстом беда.
Как можно это исправить?)
...
Рейтинг: 0 / 0
ADO MySql Odbc [stored procedure] кракозябры
    #39973294
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
Вылетают кракозябры типа ??????? C числами проблем нет выводятся как надо, а вот с текстом беда.
Как можно это исправить?)

А при создании базы на MySQL какая кодировка указана ?
По последним отзывам желательна Charset-utf8mb4,Collation name -utf8mb4_unicode_ci .
...
Рейтинг: 0 / 0
ADO MySql Odbc [stored procedure] кракозябры
    #39973307
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMan,
Да по классике, ставлю utf8_general_ci.
Не было проблем до сего момента вроде. У меня к этой базе клиент написан на C#, к ней же подключаюсь с java Android. А вот родной аксесс и vba подкузьмил(
Версия мускула 5.7.. Классика. Чёт в vba подправить надо, чувствую
...
Рейтинг: 0 / 0
ADO MySql Odbc [stored procedure] кракозябры
    #39973317
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
Да по классике, ставлю utf8_general_ci
я имел ввиду не кодировку полей в таблицах ,а именно самой базы данных . А если прилинковать таблицы к серверу? В таблицах нормальное отображение ? Я подключался из Access проблем не было.
P.S насколькоя помню при создании базы данных в MySQL кодировка по умолчанию Svedish .
...
Рейтинг: 0 / 0
ADO MySql Odbc [stored procedure] кракозябры
    #39973323
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMan
Сергей Лалов
Да по классике, ставлю utf8_general_ci
я имел ввиду не кодировку полей в таблицах ,а именно самой базы данных . А если прилинковать таблицы к серверу? В таблицах нормальное отображение ? Я подключался из Access проблем не было.
P.S насколькоя помню при создании базы данных в MySQL кодировка по умолчанию Swedish .
...
Рейтинг: 0 / 0
ADO MySql Odbc [stored procedure] кракозябры
    #39973325
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMan,
Да, именно сама база данных в такой кодировке. Я их изначально создавал все базы в этой рекомендовано кодировке. И все что внутри тоже в ней
...
Рейтинг: 0 / 0
ADO MySql Odbc [stored procedure] кракозябры
    #39973326
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю проблема в драйверах mysql odbc
...
Рейтинг: 0 / 0
ADO MySql Odbc [stored procedure] кракозябры
    #39973337
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если залинковать напрямую таблицы через драйвер unicode ,то все отображается нормально. Вся киррилица и символы на месте.
...
Рейтинг: 0 / 0
ADO MySql Odbc [stored procedure] кракозябры
    #39973339
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решил поэкспериментировать и добавил в строке подключения ANSI DRIVER вместо unicode driver. Результат такой же.
В рамках данного драйвера создал еще одну процедуру на сервере mysql , на этот раз с входным параметром (запрос на добавление принимает параметр имени заказчика и добавляет его в таблицу t_customers

Код: sql
1.
2.
3.
4.
5.
6.
DELIMITER $$
CREATE PROCEDURE `ДОБАВИТЬ_ВАСЮ`(IN nameText VARCHAR(255))
BEGIN  
    INSERT INTO t_customers (customer) VALUES (nameText);
END$$
DELIMITER ;



пишем ADO с входным параметром
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Dim conn As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs As ADODB.Recordset
Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={MySQL ODBC 8.0 ansi driver};SERVER=localhost;DATABASE=db_shop;user=test;password=test;Option=3;"
conn.Open
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
cmd.CommandType = adCmdStoredProc 
cmd.CommandText = "ДОБАВИТЬ_ВАСЮ" 
Dim myVar As String
переменнаяВася="ВАСЯ"
cmd.Parameters.Append cmd.CreateParameter("nameText", adVarChar, adParamInput, 255, переменнаяВася)
cmd.Execute
conn.Close



Смотрим в phpMyAdmin , и чудеса, Вася добавился и ему пофиг на кодировку На вход работает, принимает нормально переменную, чудеса какие то, а вот выходную в предыдущем примере выдает в кракозябрах
...
Рейтинг: 0 / 0
ADO MySql Odbc [stored procedure] кракозябры
    #39973358
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
выходную в предыдущем примере выдает в кракозябрах

Я в прошлом году эксперементировал 2 дня . Подобная ситуация была в PHP и HTML . И что самое интерессное . Вставлял данные через форму , если в форме отображалось нормально , то в таблицах на сервере нет, а если заносил напрямую в таблицы, то в таблицах отображалось нормально , а в форме крякозябры . Но у меня была база в другой кодировке . Закончилось все созданием новой базы и занесением данных , но кодировка базы , строки подключения и HTML документа utf8mb4 и unicode_ci , почему то на форумах советуют именно эти кодировки .
...
Рейтинг: 0 / 0
ADO MySql Odbc [stored procedure] кракозябры
    #39973366
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMan, P.S. и еще не помню, не факт конечно , но посмотрите в региональных установках Windows 10 . Там есть галочка применять кодировку UTF8 . Может еще в этом может быть проблема . Я эксперементировал везде . 😀
P.S и попробуйте именно unicode_ci . Не факт конечно , но чем черт не шутит . Но факт , что нужно играться с кодировками. :))
...
Рейтинг: 0 / 0
ADO MySql Odbc [stored procedure] кракозябры
    #39973370
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMan,
Спасибо, попробую. Я тут кроме драйверов сейчас удалил старую сборку wampserver и поставил наконец то с mysql 8.0 Дампы баз сохранил, но вот хранимки и привилегии придется переписывать заново

Почитал на форумах, есть описание схожих проблем, действительно склоняются что в Windows 10 надо кодировку поменять. Спс) Сейчас и эту галочку надавлю)
...
Рейтинг: 0 / 0
ADO MySql Odbc [stored procedure] кракозябры
    #39973373
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMan
Сергей Лалов
выходную в предыдущем примере выдает в кракозябрах

Я в прошлом году эксперементировал 2 дня . Подобная ситуация была в PHP и HTML . И что самое интерессное . Вставлял данные через форму , если в форме отображалось нормально , то в таблицах на сервере нет, а если заносил напрямую в таблицы, то в таблицах отображалось нормально , а в форме крякозябры . Но у меня была база в другой кодировке . Закончилось все созданием новой базы и занесением данных , но кодировка базы , строки подключения и HTML документа utf8mb4 и unicode_ci , почему то на форумах советуют именно эти кодировки .


В вебе это боль, особенно если в какой то из библиотек локальных при копировании в другую папку проекта часть файлов самокодировалась в другой формат. И начинаешь поочередно все файлы приводить к одному и тому же формату))
...
Рейтинг: 0 / 0
ADO MySql Odbc [stored procedure] кракозябры
    #39973383
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов,

Я тоже долго игрался с utf-8, но так и не пристрелялся, всегда 50 на 50 получалось то нормально то крокозябры, если попалась какая то машина с крокозябрами, то хоть застрелись - никуда не денутся... В результате теперь всегда и создаю и поля делаю с 1251_general_ci, проблема исчезла от слова совсем
...
Рейтинг: 0 / 0
ADO MySql Odbc [stored procedure] кракозябры
    #39973545
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag,
Да, причём замечал если к примеру сервер стоит на моем компе, у меня кракозябры, а у другого человека, который подключается удалённо со своего компа с клиентской части все хорошо. И наоборот.
...
Рейтинг: 0 / 0
ADO MySql Odbc [stored procedure] кракозябры
    #39973634
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag,

файл должен быть - utf-8 (без BOM)
когда столкнулся с php, только это помогло
причем так же и сами файлы скриптов, и файлы html
тупо в notepad++ перекодировку делал
только так победил
ну а БД уже писали
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ADO MySql Odbc [stored procedure] кракозябры
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]