За последние 24 часа нас посетили 22652 программиста и 1204 робота. Сейчас ищут 743 программиста ...

MSSQL. Проблема с заглавной буквой "И"

Тема в разделе "MSSQL", создана пользователем kutsy, 2 сен 2010.

  1. kutsy

    kutsy Активный пользователь

    С нами с:
    2 сен 2010
    Сообщения:
    1
    Симпатии:
    0
    Добрый всем день.

    Есть два сервера:
    • 1. на Windows 2003 Server, c БД MSSQL 2000
      2. на FreeBSD 7.3, на котором уставнолен nginx 0.8+Apache 2.2+php 5.2
    Сайт работает на кодировке UTF-8, а БД в Windows-1251.
    Столкнулся с такой проблемой.
    При вставке данных в MSSQL, через ADOdb и FreeTDS, получаю ошибку:

    Код (Text):
    1. Fatal error: mssql error: [0: Line 1: Incorrect syntax near 'ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМ�'.] in EXECUTE("UPDATE news SET n_title='ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮйцукенгшщзхъфывапролджэячсмитьбю1234567890' WHERE n_id = 7172")  [/lib/adodb/adodb-errorhandler.inc.php:77]
    Код простой:

    Код (Text):
    1. $data = array(
    2.  
    3.   'n_title' => 'ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮйцукенгшщзхъфывапролджэячсмитьбю1234567890',
    4.  
    5. );
    6. $db->AutoExecute('news', $data, 'UPDATE', 'n_id = 7172');
    Пробовал всяческие извращения типа:
    Код (Text):
    1. $data['n_title'] = iconv("UTF-8","UCS-2LE",$data['n_title']);
    2. $data['n_title'] = iconv("UCS-2LE","UTF-8",$data['n_title']);
    или
    Код (Text):
    1. $data['n_title'] = iconv('UTF-8', 'cp1251', $data['n_title']);
    2. $data['n_title'] = iconv('cp1251', 'utf-8', $data['n_title']);
    После этих и подобных переконвертаций вместо буквы "И" получается что-то такое: "�?"

    Если включить DEBUG в ADOdb, валятся такие ошибки:

    Код (Text):
    1. Warning: mssql_query() [function.mssql-query]: Error converting client characters into server's character set. Some character(s) could not be converted. (severity 16) [/lib/adodb/drivers/adodb-mssql.inc.php:772]
    2. Warning: mssql_query() [function.mssql-query]: message: Unclosed quotation mark before the character string 'ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМ�'. (severity 15) [/lib/adodb/drivers/adodb-mssql.inc.php:772]
    3. Warning: mssql_query() [function.mssql-query]: message: Line 1: Incorrect syntax near 'ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМ�'. (severity 15) [/lib/adodb/drivers/adodb-mssql.inc.php:772]
    4. Warning: mssql_query() [function.mssql-query]: Query failed [/lib/adodb/drivers/adodb-mssql.inc.php:772]
    ADOdb и FreeTDS самых последних версий.

    Конфиг FreeTDS:

    Код (Text):
    1. [sitedb0]
    2.         host = 192.168.1.40
    3.         port = 1433
    4.         tds version = 8.0
    5.         client charset = CP1251
    Будут какие-то идеи?
    Или проще застрелится?