Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Кодировка WEB сервера и MSSQL  [new]
Кодировка
Guest
Добрый день.

Крутиться база на MSSQL2008R2.
Написали кусок бизнес-логики, который будет использоваться WEB сервером. Модуль для WEB сервера написан на php с применением json.
json как известно работает на UTF-8.

Когда приходит какой-то русский текст на WEB сервер, то модуль php, обращаясь к базе через драйвер, пишет в базу кракозябры.
Чтоб было всё как надо, перед тем как писать в базу делаем перекодировку с UTF-8 на CP1251.

Это правильный подход с перекодировкой в модуле php, или надо делать по другому, например перекодировку использовать в хранимых процедурах MSSSQL?
17 май 16, 10:42    [19182304]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка WEB сервера и MSSQL  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Кодировка
обращаясь к базе через драйвер, пишет в базу кракозябры

Тип данных какой используете (NVARCHAR/VARCHAR)? N перед строковыми литералами стоят в формируемых запросах?
17 май 16, 10:50    [19182350]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка WEB сервера и MSSQL  [new]
Кодировка
Guest
AlanDenton,

В таблицах всегда и везде используем NVARCHAR.

Обращение модуля php к бизнес-логике идёт через хранимые процедуры. Т.е. внутри хп использовать перед параметром "N" ненужно.
17 май 16, 10:57    [19182392]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка WEB сервера и MSSQL  [new]
Кодировка
Guest
AlanDenton,

т.е. формируемых запросов нет, идёт вызов хранимой процедуры (в модуле php имеется ввиду).
17 май 16, 10:59    [19182403]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка WEB сервера и MSSQL  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Кодировка
Т.е. внутри хп использовать перед параметром "N" ненужно.

Не согласен.

К сообщению приложен файл. Размер - 16Kb
17 май 16, 11:07    [19182456]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка WEB сервера и MSSQL  [new]
Кодировка
Guest
AlanDenton,

Хм, не совсем понял. У нас вызов то идёт не через MMS а через php модуль.
"N" - то используется в T-SQL,
как его использовать в модуле php? если только через реализацию динамического запроса, но это ведь криво тогда
17 май 16, 11:24    [19182555]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка WEB сервера и MSSQL  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Запустите профайлер и покажите какой запрос отправляется на сервер.
17 май 16, 11:34    [19182638]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка WEB сервера и MSSQL  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Кодировка,

лучше в UTF-16 в вашем случае. Вполне вероятно, что можно просто настроить драйвер соединения на перекодировку.
17 май 16, 11:39    [19182675]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка WEB сервера и MSSQL  [new]
Кодировка
Guest
Владислав Колосов,

зачем нам только использовать UTF-16? и что не так с UTF-8, который повсеместно используется в json
17 май 16, 12:00    [19182872]     Ответить | Цитировать Сообщить модератору
 Re: Кодировка WEB сервера и MSSQL  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Кодировка,

сервер умеет сохранять UTF-16, это как раз и есть nvarchar. Если вы используете 1251, то ограничиваетесь русском языком, другие национальные не сможете использовать.
17 май 16, 12:37    [19183075]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить