php + access: кодировка (PDO)

bobo

Новичок
Привет, как правильно кодировку указывать ? В интернетах ничего внятного найти не могу.
Соединяюсь с помощью pdo, на выходе ����:

Код:
$connection = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . $db . "; Uid=; Pwd=;");
Далее пробовал и $connection->query("SET NAMES cp1251"); и $connection->exec("SET NAMES cp1251"); и SET CHARACTER, и вместе, и по-отдельности - бестолку :( Что еще можно попробовать ? Заранее благодарю!
 

Absinthe

жожо
Если вы используете cp1251, то привыкайте к постоянным проблемам с кодировками.
Их не будет, если везде использовать utf-8.
 

bobo

Новичок
Да я вообще-то utf-8 и использую, в первом сообщении уже просто внимания не обратил, ибо и так и сяк пытался с кодировкой играть.
В самом access'e разве можно где-то utf-8 выставить ?
 

bobo

Новичок
С утра сразу не обратил внимания, сорри: у меня в htaccess выставлена кодировка UTF8, из access'a данные передаются (видимо) в cp1251 и на странице отображаются соответственно вопросиками. Если руками изменить кодировку страницы - все ок.
Возникает вопрос - как установить в access кодировку utf8 ?
 

ksnk

прохожий
bobo, iconv?
Если я правильно понимаю, то другого пути работать с msAccess из php - нет.
 

Вурдалак

Продвинутый новичок
Хороший пример того, что какой бы PDO ни была «кроссплатформенной», всегда нужно иметь абстракцию над этой хренью. В данном случае можно сделать декоратор, который входные/выходные данные будет через iconv перегонять, весь говнокод будет в одном месте.

К тому же вполне реальный кейс, когда захочется сменить PDO на mysqli, например.

Серьезная проблема PDO в отсутствии интерфейсов, это просто реализация. А использовать реализацию напрямую всегда чревато. Я бы правда не сказал, что это проблема именно PDO, это проблема тех, кто этого не понимает.
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
Я бы сказал, это хороший пример того, что надо таки понимать, что делает класс, прежде чем браться его использовать.
Что-то я не могу добавить MSACCESS драйвер в системный DSN Win7. Надо что-то поставить, чтобы он появился? Гугл знает.
 
Последнее редактирование:
Сверху