SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 10.11.2016 09:19:58

khext
Участник
Зарегистрирован: 09.11.2016
Сообщений: 2

Еща раз про кодировки

Прошу прощения за свою некомпетентность.
Помогите подружить MySQL с Access. Пожалуйста.

Клиент переехал на новую платформу и Access стал показывать кракозяблы.

1. Было до переезда:
Сервер:
Win XP SP3 32Bit (Англоязычный с русскими шрифтами)
MySQL 5.0
БД в кодировке latin1 (cp1252), названия колонок - utf8
Клиент:
Win 7 SP1 32Bit (Русская, корпоративная)
MySQL ODBC 3.51 Driver
MS Access 2010 со связанными таблицами на сервере.
До переезда в таблицах русские буквы отображались без проблем.

2. После переезда:
Сервер тот же.
Клиент:
Win 7 SP1 64Bit (Русская, корпоративная)
MySQL ODBC 5.3 Unicode Driver
MS Access 2013 с теми же связями.

3. В результате:
- в таблицах MySQL на сервере то же самое "àáâãäå¸", что и было до переезда. Это ожидаемо, т.к. на сервере ничего не менялось.
- в таблицах Access неперекодированное "àáâãäå¸" вместо ожидаемого "абвгдеё". До переезда все перекодировалось нормально.
- замена драйвера на MySQL ODBC 5.3 ANSI Driver не помогает. Access выводит другие, но тоже "зяблы".
- перекодирование БД в cp1251 нежелательно и непредсказуемо, т.к. Access при попытке ввода русских букв в поля TEXT ругается на превышение размера данных над полем, хотя английские буквы кушает без вопросов.
- попытки угадать правильные character-set и collation в my.ini не принесли ровно никакого результата - при любых сочетаниях настроек ничего не происходит. В полях таблиц Access точно то же самое и строго одно и тоже  - "àáâãäå¸". Не меняется вообще. Хотя на старом клиенте все изменения видны четко - текст из "абвгдеё" становится нечитаемым при любых изменениях настроек в my.ini
- изменения в коде VBA MS Access SQL-запросов невозможны. И я считаю - бесполезны, т.к. проблема наблюдается еще до того места, где я могу формировать какие-либо запросы по желанию, т.е. - уже на стадии чтения связанных таблиц самим Access'ом из БД сервера. Хотя возможно я ошибаюсь - поправьте, если не так.
- пляски с бубном утомительны и тоже не помогают. Не отправляйте в этом направлении, пожалуйста.
- изучение документации в поисках истины также невозможно в силу ряда причин. Прошу простить за это.

Поможете ?
-

Неактивен

 

#2 10.11.2016 14:49:00

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Еща раз про кодировки

khext написал:

- перекодирование БД в cp1251 нежелательно и непредсказуемо, т.к. Access при попытке ввода русских букв в поля TEXT ругается на превышение размера данных над полем, хотя английские буквы кушает без вопросов.

так ведь у вас на старом клиенте в аксесе отображались русские буквы? и вы их редактировали?

трогать my.ini не нужно
ищите настройки MySQL ODBC 5.3 Unicode Driver и там стучите в бубен, если есть возможность сравните с тем что было на старом клиенте

Но, имхо, вся ваша конструкция сплошной бубен, и будет лучше переделать mysql в cp1251.
сделайте тестовую базу в mysql в cp1251 и проверьте будет ли в новом аксесе "при попытке ввода русских букв в поля TEXT ругается на "?

Неактивен

 

#3 10.11.2016 15:38:16

khext
Участник
Зарегистрирован: 09.11.2016
Сообщений: 2

Re: Еща раз про кодировки

Сделал новую таблицу в cp1251, в настройках ODBC указал Character Set cp1251.
Access не ругается, кодировку видит нормально.
Не могу заставить его видеть старые таблицы, созданные в latin1. Можно как-то сделать ?

Другой вариант - пересобрать все таблицы заново с cp1251 точно напоминает танец с бубном.
Как делал :
- собрал бакапы через MySQL Administrator GUI
- перекодировал utf8 -> ANSI
- дописал в конструкцию CREATE TABLE : character set cp1251
- залил все обратно через CLI : SOURSE D:\бакап.sql
- получил на выходе совсем фигню : "???????"

Понятно, что где-то косяк при перекодировке, но понять где не изучая MySQL - бубен.

Скажите, не пиная, как нужно ?
Как заставить mysql.exe перебакапить БД в нужной кодировке ? т.е. - 1251.
Или как заставить ODBC перекодировать данные из latin1 в 1251 ?

Неактивен

 

#4 10.11.2016 16:00:54

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Еща раз про кодировки

khext написал:

Скажите, не пиная, как нужно ?
Как заставить mysql.exe перебакапить БД в нужной кодировке ? т.е. - 1251.

подробная инструкция тут: http://sqlinfo.ru/articles/info/5.html

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson