Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ADO MySql Odbc [stored procedure] кракозябры / 16 сообщений из 16, страница 1 из 1
25.06.2020, 16:10
    #39973220
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO MySql Odbc [stored procedure] кракозябры
Привет, столкнулся с проблемой отображения результата вывода параметра сохраненной процедуры в 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
25.06.2020, 18:10
    #39973294
DarkMan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO MySql Odbc [stored procedure] кракозябры
Сергей Лалов
Вылетают кракозябры типа ??????? C числами проблем нет выводятся как надо, а вот с текстом беда.
Как можно это исправить?)

А при создании базы на MySQL какая кодировка указана ?
По последним отзывам желательна Charset-utf8mb4,Collation name -utf8mb4_unicode_ci .
...
Рейтинг: 0 / 0
25.06.2020, 18:31
    #39973307
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO MySql Odbc [stored procedure] кракозябры
DarkMan,
Да по классике, ставлю utf8_general_ci.
Не было проблем до сего момента вроде. У меня к этой базе клиент написан на C#, к ней же подключаюсь с java Android. А вот родной аксесс и vba подкузьмил(
Версия мускула 5.7.. Классика. Чёт в vba подправить надо, чувствую
...
Рейтинг: 0 / 0
25.06.2020, 18:57
    #39973317
DarkMan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO MySql Odbc [stored procedure] кракозябры
Сергей Лалов
Да по классике, ставлю utf8_general_ci
я имел ввиду не кодировку полей в таблицах ,а именно самой базы данных . А если прилинковать таблицы к серверу? В таблицах нормальное отображение ? Я подключался из Access проблем не было.
P.S насколькоя помню при создании базы данных в MySQL кодировка по умолчанию Svedish .
...
Рейтинг: 0 / 0
25.06.2020, 19:08
    #39973323
DarkMan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO MySql Odbc [stored procedure] кракозябры
DarkMan
Сергей Лалов
Да по классике, ставлю utf8_general_ci
я имел ввиду не кодировку полей в таблицах ,а именно самой базы данных . А если прилинковать таблицы к серверу? В таблицах нормальное отображение ? Я подключался из Access проблем не было.
P.S насколькоя помню при создании базы данных в MySQL кодировка по умолчанию Swedish .
...
Рейтинг: 0 / 0
25.06.2020, 19:12
    #39973325
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO MySql Odbc [stored procedure] кракозябры
DarkMan,
Да, именно сама база данных в такой кодировке. Я их изначально создавал все базы в этой рекомендовано кодировке. И все что внутри тоже в ней
...
Рейтинг: 0 / 0
25.06.2020, 19:13
    #39973326
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO MySql Odbc [stored procedure] кракозябры
Думаю проблема в драйверах mysql odbc
...
Рейтинг: 0 / 0
25.06.2020, 20:25
    #39973337
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO MySql Odbc [stored procedure] кракозябры
Если залинковать напрямую таблицы через драйвер unicode ,то все отображается нормально. Вся киррилица и символы на месте.
...
Рейтинг: 0 / 0
25.06.2020, 21:34
    #39973339
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO MySql Odbc [stored procedure] кракозябры
Решил поэкспериментировать и добавил в строке подключения 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
25.06.2020, 22:52
    #39973358
DarkMan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO MySql Odbc [stored procedure] кракозябры
Сергей Лалов
выходную в предыдущем примере выдает в кракозябрах

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

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

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


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

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

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


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