Главная страница
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.009 c
15-1245949320
Илья_
2009-06-25 21:02
2009.08.23
Сборка компьютера


11-1203360484
someone
2008-02-18 21:48
2009.08.23
Подскажите когда и как надо освобождать TOpenSaveDialog


2-1245838548
Uno-84
2009-06-24 14:15
2009.08.23
Отрисовка ProgressBar в ListView


1-1212569293
[i2e]
2008-06-04 12:48
2009.08.23
ActionManager и меню на его основе. А как сделать Submenu?


15-1245441575
Step
2009-06-19 23:59
2009.08.23
Служба клиент групповой политики