Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.08.23;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
6-1206045254
anton
2008-03-20 23:34
2009.08.23
навигация в веббраузер


3-1226034688
Liones
2008-11-07 08:11
2009.08.23
Таблицы Paradox


15-1245679260
My_name
2009-06-22 18:01
2009.08.23
Первый элемент массива PHP?


1-1212411569
Kolan
2008-06-02 16:59
2009.08.23
Так присвоение булевой переменной атомарное или нет?


15-1245903296
Pavlov
2009-06-25 08:14
2009.08.23
Настройка работы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский