Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.08.23;
Скачать: CL | DM;

Вниз

php mssql   Найти похожие ветки 

 
Style ©   (2009-06-22 14:08) [0]

Есть ли возможность установить кодировку для соединения в utf-8 для работы с функциями php под windows. Опция ini-шника mssql.charset как я понял только для freetds. Или только самому все перекодировать?


 
Something   (2009-06-22 14:23) [1]

ms sql server не знает utf-8, а php_mssql вдобавок не знает и utf-16 и на клиенте перекодирует ее в ANSI. Так что да, сортировку руками, хранить же данные можно и в utf, серверу безразлично что записывается в поле


 
Style ©   (2009-06-22 14:41) [2]


> Так что да, сортировку руками,


кодировку наврена :))


> хранить же данные можно и в utf, серверу безразлично что
> записывается в поле


хранить то я не могу в UTF-8, сервер другими системами используется.

вот чего нарыл.
http://docs.moodle.org/en/Installing_MSSQL_for_PHP

есть FreeTDS под винду откомпилированный как ext для php полностью повторяющий функции php_mssql.dll

ща буду пробовать


 
Something   (2009-06-22 15:22) [3]

>> Так что да, сортировку руками,

>кодировку наврена :))

именно сортировку, т.к поскольку в списке COLLATION сервера utf не имеется, кирилица не будет сортироваться по ORDER BY.
насчет freetds, интересная мысль, смущает только название дллки - php_dblib.
наводит на мысль о использовании ntwdblib.dll так же, как это делает php_mssql, со всеми вытекающими "прелестями"


 
Style ©   (2009-06-22 16:48) [4]


> наводит на мысль о использовании ntwdblib.dll так же, как
> это делает php_mssql, со всеми вытекающими "прелестями"

все равно не работает.

серверная кодировка CP1251
мне на клиенте надо получить UTF-8
подкрутил эту библиотеку и включил там debug dump
во freetds.conf

iconv.c:363:iconv to convert client-side data to the "UTF-8" character set
iconv.c:516:tds_iconv_info_init: converting "UTF-8"->"UCS-2LE"
iconv.c:516:tds_iconv_info_init: converting "ISO-8859-1"->"UCS-2LE"
net.c:210:Connecting to *.*.*.* port 1433 (TDS version 7.0)

теперь FreeTDS видимо пытается ICONVить данные, но все равно получается не то.

Причем под линуховой версией все работает нормульно.

Может надо в cliconfg ANSI to OEM убрать.


 
Something   (2009-06-23 10:45) [5]

в общем правильным подходом наверное будет таки mbstring, если конечно объем кода, который придется прошерстить на предмет вставки mb_convert... не превышает разумные пределы.
или линукс в виртуалбоксе :)


 
Style ©   (2009-06-23 10:49) [6]

Да, время - не стал терять. Сделал iconv (cp1251 -> utf8)
после Fetch
А также utf8 -> cp1251 перед передачей параметров в процедуры и выполнением
sql запросов.
Соответственно cp1251 -> utf8 обратно, для output параметров.

Не красиво конечно - но работает.



Страницы: 1 вся ветка

Текущий архив: 2009.08.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
1-1212431764
framez
2008-06-02 22:36
2009.08.23
Удаление файла с Http сервера


15-1245250048
Empleado
2009-06-17 18:47
2009.08.23
Если бы у наших маленьких детей был свой форум, какие бы темы ...


1-1212748708
Ольга
2008-06-06 14:38
2009.08.23
Компонента cxGrid (DevExpress)


2-1245681294
marantz85
2009-06-22 18:34
2009.08.23
Как переписать данные из динамического массива в memorystream?


15-1244210076
Student
2009-06-05 17:54
2009.08.23
Качество кода