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

Откуда:
Сообщений: 2
Здравствуйте, не нашел решения своего вопроса поэтому создал новую тему.

Есть база MSSQL, в ней организованы процедуры вставки данных.
В zende приконнектился к базе и данные (с тайпкастом) получаю нормально.
вот так:

     $this->_db->query("SELECT CAST(Name AS TEXT) as Name, CAST(Currency AS TEXT) as Currency, Cost, ImagePath  ...")->fetchAll();


Тайпкаст нужен для того что бы нормально выбирались поля nvarchar, без него возвращаются только "???????? ??????".

теперь когда мне надо ЗАПИСАТЬ в бд данные я использую
$query = "EXEC [Description].[PAddingToDescriptionOfProducts]
                       {$post['Language']},
                       '{$post['Articul']}',
                       '{$post['Name']}',
                       '{$post['DescriptionShort']}',
                       '{$post['DescriptionLong']}',
                       '{$post['ImagePath']}'";
$this->_db->query($query);


Но в базу данных попадает (вместо кириллических символов) только "?????????? ???? ????????????", что обидно. Мне посоветовали "Сконвертируйте в win1251 перед записью".

И независимо от того делаю ли я
$query = iconv("utf-8", "cp1251", $query);

или
foreach ($post as $key => $val) {
            $new_post[$key] =  iconv("utf-8", "cp1251", $val);
        }


результат всеравно "?????????? ???? ????????????". (((( Не подскажете в какую сторону копать?
Проблема еще заключается в том что независимо от кодировки в которой я отправляю строки в БД вставляются ОДНИ И ТЕ ЖЕ gпо количеству символов и пробелов ("???? ???????") строки.

WEBсервер работает на Дебиане, PHP 5.3, Сервер MSSQL2012 Express, драйвер dblib8.
1 сен 12, 12:32    [13099095]     Ответить | Цитировать Сообщить модератору
 Re: в MSSQL из PHP не вставляет строки UTF8  [new]
WellSlava
Member

Откуда:
Сообщений: 207
jg_shift,

Может быть это проблема винды. Если при английской раскладке скопируешь русский текст из одной программы и вставишь в другую, то получатся такие же символы: "???? ?????".
Если причина в этом, то я не знаю даже где копать.
2 сен 12, 01:26    [13100582]     Ответить | Цитировать Сообщить модератору
 Re: в MSSQL из PHP не вставляет строки UTF8  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Я просто оставлю это здесь: PDO
По теме QA

Я не буду говорить что я думаю об этих умных, любопытный, желающих делать правильно программистов.
Заполонивших всё вокруг. Хабр после них стал тортом, они правильно всё понимаю и приводят веские доводы, про то как надо программировать и проектировать, при их превосходном знании SQL и как надо с ним взаимодействовать, как надо настраивать клиента. Обожаю этих застенчивых и скромных профессионалов.

Я просто обожаю читать их глубокие познаниям по базам данным. Они никогда не пишут никакой элементарщины, нет ни одного комментария хоть как-то отбрасывающее тень на свет из чистого знания.

Алилуя, да здравствует великий свет веб программистов, особенно PHP-шников.
Аминь.

PS: Эх узнать бы имя, точнее адрес, того великого архитектора, который создал столь чудные интерфейсы взаимодействия и посеял свет их и воздвиг праведное движение и воодушевил последователей.
2 сен 12, 05:09    [13100649]     Ответить | Цитировать Сообщить модератору
 Re: в MSSQL из PHP не вставляет строки UTF8  [new]
invm
Member

Откуда: Москва
Сообщений: 9396
jg_shift,

Вы пользуете для доступа к серверу интерфейс DB-Library, который не поддерживает юникод. Более того, у вас, похоже, драйвер от сайбейза. Ну и к сведению: UTF-8 тоже не поддерживается в MSSQL.

Про PDO вам уже писали. Вот довесок к нему -- Microsoft SQL Server ODBC Driver 1.0 for Linux.
2 сен 12, 09:50    [13100799]     Ответить | Цитировать Сообщить модератору
 Re: в MSSQL из PHP не вставляет строки UTF8  [new]
jg_shift
Member

Откуда:
Сообщений: 2
Всем спасибо за ответы.
2 сен 12, 12:06    [13100982]     Ответить | Цитировать Сообщить модератору
 Re: в MSSQL из PHP не вставляет строки UTF8  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
invm
UTF-8 тоже не поддерживается в MSSQL
Это тут не причём совершенно. Чтобы сохранить символы, для этого нужно иметь вразумительный недопотопный, не сделаный через *опу драйвер, точнее интерфейс взаимодействия.

UTF-8 в скуле нужен не для этого, а для того чтобы уменьшить накладные расходы конвертации.
Если основные системы взаимодействия всякие .Net, то смысла мало (вроде как уникоды совпадают).
Да и вообще многим на это плевать.
Большая часть проблем в клиентской части, а не в серверной, да и то в тех частях где M$ специально не хочет поддерживать.
3 сен 12, 02:47    [13103009]     Ответить | Цитировать Сообщить модератору
 Re: в MSSQL из PHP не вставляет строки UTF8  [new]
boltnik
Member

Откуда: Калуга/Москва
Сообщений: 144
Тип поля какой, куда сохраняете данные?
3 сен 12, 19:05    [13108235]     Ответить | Цитировать Сообщить модератору
 Re: в MSSQL из PHP не вставляет строки UTF8  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
boltnik, чукча не читатель.
Тип поля тут не причём.
3 сен 12, 19:56    [13108345]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить