Возникла задача получать данные из SQL Server в PHP.
Все бы ничего, но кодировка у MSSQL стоит SQL_Latin1_General_CP850_CI_AS.
Нужно получать данные в UTF-8.
Предполагаю два пути:
— Существование таблетки вида SET NAMES UTF-8. Существует ли нечто подобное в MSSQL?
— COLLATE каждого столбца во время запроса. COLLATE во что? Списки collation нашел, но ничего похожего на юникод не увидел.
Сейчас получаемые данные выглядят как знаки вопроса и подобрать кодировку для iconv под это дело не удается, да и не хотелось бы это делать через iconv.
p.s. SQL Server 8.0 — если не ошибаюсь, то это двухтысячный.
Так я пока и сделал. Но согласитесь, это костыль :-)
А в обратную сторону у меня так не получилось. Не могу выбрать строки по where с русскими буквами.
Collation базы SQL_Latin1_General_CP850_CI_AS, iconv при конвертации в cp850 ругается на illegal characters… Во что конвертировать мое utf-8 чтобы sql server понял?
С обратной ситуацией попробовать можно так (продолжение костылей):
входящую строку конвертим iconv из utf8 в cp 1251
затем вставляем ее в запрос в котором есть преобразования типа
convert (nvarchar,table.field) collate CYRILLIC_GENERAL_CI_AS as fieldNewName
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.