Статьи
Портфолио
Друзья
Контакты

Последние статьи

15.10.2011 Zend Framework Day 2011, 12 ноября, Киев (1)

27.09.2011 MSSQL, XML и PHP. Как заставить это работать из под *nix? (0)

22.06.2011 Zend Framework, MSSQL и UTF-8 - проблемы с кодировками (9)

Все

Категории

PHP (2)

Zend Framework (32)

Javascript (4)

Другое (13)

Книги (1)

Все

RSS

Статьи

Комментарии

Портфолио

Облако тегов

программирование  open search  портфолио  php  zend framework  Zend_Db  Smarty  Zend_Form  паттерны  javascript  niceforms  jQuery  Zend_Mail  веб  Google  Zend_Rest  Zend_View_Helper  zend casts  Zend_View  Zend_Layout  speedUp  интернет  Загрузчик фотографий  Flash  ВКонтакте  zend  localization  zend_translate  gettext  Я читаю  Книги  sphinx  софт  массовые рассылки  хранение данных 

Все

Статистика



Видео ViewPad 7, Видео обзоры Планшеты ViewSonic. Популярные товары на Видео .
Адреса магазина topshop в краснодаре.
електрочайник

Главная > Статьи > Zend Framework > Zend Framework, MSSQL и UTF-8 - проблемы с кодировками
22.06.11 Zend Framework, MSSQL и UTF-8 - проблемы с кодировками

MSSQL Server

Недавно один из проектов на работе мое руководство решило перенести на MSSQL (раньше работал на MySQL). Решение, не самое лучшее, учитывая все нюансы, но не в этом суть. Пришлось поковырять этого зверя и я сразу же наткнулся на ряд проблем с кодировками. В MySQL эти вопросы решаются на раз-два, но в MSSQL, как оказалось, не так все просто.

 

 

Проблема - сплошные крякозябры


Сайт в кодировке UTF-8, а это значит, что из БД надо данные тоже в утф. По техническим причинам, данные в MSSQL должны и хранятся в windows-1251. SET NAMES utf8 - не работает. Решения этого вопроса нашлось 2 (общался с нашим отделом DBA):

  1. На каждое строковое поле делать cast. Для хранимых процедур принимаемые параметры ставить тип nvarchar
  2. Кодировать из кодировки в кодировку на сайте при получении и отправке данных

Принял второй вариант, потому что не хотел захламлять код хранимых процедур всякими "кастами".

 

 

Решение


Написал свой адаптер для MSSQL, который наследует адаптер поставляемый Zend Framework. Суть его работы проста - все запросы и ответы кодируем в однобайтную кодировку (и обратно, конечно), на уровне адаптера, чтобы не делать это по всему проекту.

 

 

Эм.. И что? Просто это еще не весь код :) На самом деле адаптер сделан для удобства использования, но весь код находится еще ниже - в Statement классе:

 

Использовать все это тоже не сложно (не забываем добавить свой нэймспэйс):

Надеюсь приведенное решение избавит кого-то от потери часа времени :)

 

TODO:

  • Сделать возможность настраивать через конфиг, из чего кодировать и во что


Обратите внимание на каталог компаний по странам СНГ, можно также почитать о том, как соблазнить девушку.

Теги:  zend framework, mssql, utf-8

Другие категории:

■ PHP ■ Zend Framework ■ Javascript ■ Другое ■ Книги
Комментарии к статье
  Олег

03.08.11 15:38:15

>>Решение, не самое лучшее, учитывая все нюансы
Андрей, перед принятием такого решения, взвешиваются все "за" и "против". Не зная все нюансы, как ты написал, читатели могут принять твою реплику за чистую монету, полагая, что "твое руководство" не компетентно. Но если взглянуть шире, то можно увидеть, что это фундамент для интеграции в распределенной системе, плюсы от которого нивелируются точечными техническими сложностями.
  illusive

03.08.11 16:23:05

В данный момент я понял и осознал правильность выбора руководства, но материал не об этом, поэтому я не хотел бы концентрировать внимание на этом.

  payday loans online

10.02.12 22:18:47

csombhj payday loans online CfeXn payday loans QCsLEv payday loan sAKaqH
  viagra

15.02.12 03:52:31

vbgnuyhr viagra 8527 discount tadalafil LKfcpA kamagra viagra cialis apcalis tAekdT cheap cialis =-]
  Payday loans

16.02.12 00:54:45

emxgdf Payday loans 5838 payday loans 4989 Payday loan =-]
  cialis

17.02.12 16:08:43

sevsawyj cialis :-O viagra DCdCfo viagra %-[[[ ordering cialis >:-OOO
  Payday Loan

20.02.12 19:28:18

uyzrfst Payday Loan 9195 Online UK Payday Loans CbfEJm payday loans 1487 payday loans 1308
  Online UK Payday Loans

22.02.12 03:14:40

dggidq Online UK Payday Loans PgSWsZ Payday Loans online :-O Payday Loans online UAoaw
  cialis tadalafil

23.02.12 01:59:17

hsqjxnde cialis tadalafil 0137 cialis 6034 cialis >:-[ cheap viagra =-]
Оставить свой комментарий

 
Статьи | Портфолио | Друзья | Контакты
Идея и мозги: Васильев Андрей © 2008-2011 Web-Blog Кисточка и фантазия: Зелинский Богдан