Проблемы с кодировкой - PHP+MSSQL+FreeTDS+OpenSUSE

elrevin

Новичок
Проблемы с кодировкой - PHP+MSSQL+FreeTDS+OpenSUSE

Доброго времени суток, господа.
Проблема вот в чем: есть база 1С на MSSQL, и есть веб сервер на openSUSE10.2, на линуксе поставил free tds, настроил соединение с mssql сервером:

[mssql]
host = 192.168.10.201
port = 1433
tds version = 8.0
client charset = KOI8-R

попробовал соединиться в консоле - все работает, и данные вижу на нормальном русском языке, а вот PHP выдает все русские символы ввиде вопросов :(
 

Alexandre

PHPПенсионер
client charset = WINDOWS-1251 (или та, в которой установленны таблицы)

если сервак Win2k5 то он как-то плохо дружит с кодировками ...
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Кодировка в head?
 

elrevin

Новичок
сервак win2003, windows-1251 пробовал в freetds.conf указать - не помогло :(

-~{}~ 21.08.07 17:23:

в head windows-1251, забыл сказать пхп ошибку выдает:
Warning: mssql_query() [function.mssql-query]: WARNING! Some character(s) could not be converted into client's character set. Unconverted bytes were changed to question marks ('?'). (severity 16)
 

elrevin

Новичок
Автор оригинала: tony2001
уверен, что FreeTDS собран с iconv? и что iconv знает кодировку "windows-1251" ?
http://www.freetds.org/reference/a00262.html
# tsql -C
Compile-time settings (established with the "configure" script):
Version: freetds v0.64
MS db-lib source compatibility: no
Sybase binary compatibility: unknown
Thread safety: yes
iconv library: yes
TDS version: 8.0
iODBC: no
unixodbc: yes

-~{}~ 22.08.07 09:16:

Автор оригинала: RushHourRider
Надо cp1251 вместо windows-1251
Пробовал не помогает.
 

RushHourRider

Новичок
Русский видно в ZDE, PHP (cli, cgi, module), jdbc, unixodbc, sqsh. Привожу выдержки из конфигов.

freetds.conf:
Код:
#
#   $Id: freetds.conf,v 1.11 2005/12/05 21:34:12 freddy77 Exp $
# ...
[global]
        # TDS protocol version
	tds version = 8.0
	text size = 64512
[192.168.101.9]
	host = 192.168.101.9
	port = 1433
	tds version = 8.0
	client charset = CP1251
Конфигуре:
Код:
$ tsql -C
Compile-time settings (established with the "configure" script):
                           Version: freetds v0.64
    MS db-lib source compatibility: yes
       Sybase binary compatibility: unknown
                     Thread safety: yes
                     iconv library: yes
                       TDS version: 5.0
                             iODBC: no
                          unixodbc: no
php.ini:
Код:
extension=mssql.so
[MSSQL]
mssql.allow_persistent = On
mssql.max_persistent = -1
mssql.max_links = -1
mssql.min_error_severity = 10
mssql.min_message_severity = 10
mssql.compatability_mode = Off
mssql.datetimeconvert = Off
mssql.secure_connection = Off
;mssql.charset = "ISO-8859-1"
 

elrevin

Новичок
2 Alexandre:
SQL сервер 2000

2 RushHourRider:
пробовал, не выходит :(

-~{}~ 23.08.07 13:17:

Все получилось...
правда я так и не понял что именно помогло:
добавил локаль - localedef -i ru_RU -f CP1251 /usr/lib/locale/ru_RU.CP1251
в php.ini написал mssql.charset =cp1251
и все заработало :)
Всем огромнейшее спасибо!!!
 
Сверху