Столкнулся с проблемой кодировки при подключении к MS SQL Server
Кодировка в самой базе CP-1251, у меня доступ только на чтение и потому поменять кодировку в базе не представляется возможным
Подключаюсь так:
$serverName = "serverName";
$connectionInfo = array( "Database"=>"DB", "UID"=>"user", "PWD"=>"pass", "CharacterSet"=>"UTF-8");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
$query ="SELECT [самая], [вишенка], [в], [том], [что], [все], [поля], [имеют], [русские], [имена] FROM [db].[dbo].[русские_блин]";
$result = sqlsrv_query($conn, $query);
$row=sqlsrv_fetch_array($result);
print_r ($row);
Такой запрос работает, и даже выводит русские символы, но не все. Русские символы выводятся только в содержимом полей, имена полей выводятся квадратами. т.е. как то так:
Array ([�������� ����� �������] => русские символы)
Вместо
Array ([русские символы] => русские символы)
Если код переиначить
$serverName = "serverName";
$connectionInfo = array( "Database"=>"DB", "UID"=>"user", "PWD"=>"pass");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
$query ="SELECT [самая], [вишенка], [в], [том], [что], [все], [поля], [имеют], [русские], [имена] FROM [db].[dbo].[русские_блин]";
$query=iconv("utf-8", "windows-1251", $query); //Без этого он отправляет крокозябры в запросе
$result = sqlsrv_query($conn, $query);
$row=sqlsrv_fetch_array($result);
print_r ($row);
То приходят такие данные
Array ([�������� ����� �������] => �������� ����� �������)
Вместо
Array ([русские символы] => русские символы)
Логично, конечно, но мне надо по другому
Как бы мне подружиться с базой, что бы я мог отправлять в неё запрос в кодировка cp-1251, а получать в utf-8
P.S. Остальная кодировка в норме, те текст в php файле utf-8, в заголовке прописан utf-8
_____________
Из отчета службы безопасности:
... по поводу взлома китайцами сервера Пентагона:
1) Каждый китаец попробовал один пароль.
2) Каждый второй пароль был - maodzedun.
3) На 657983241-й попытке сервер согласился что у него пароль - maodzedun