Я использую драйвер Microsoft sqlsrv с кодировкой UTF-8 (передавая CharacterSet 'UTF-8' в sqlsrv_connect).Это прекрасно работает для фактических данных, хранящихся в базе данных, но я обнаружил проблему с неанглийским текстом, возвращаемым sqlsrv_errors.При использовании другого языка для SQL Server (например, SET LANGUAGE German
), я обнаружил, что возвращенные сообщения об ошибках не в кодировке UTF-8.Вот что sqlsrv_errors () вернул для ошибки 8152:
[Microsoft][SQL Server Native Client 10.0][SQL Server]Zeichenfolgen- oder Bin?rdaten w?rden abgeschnitten.
И как шестнадцатеричное (только два недопустимых слова):
B i n ? r d a t e n w ? r d e n
42696e8472646174656e 77817264656e
Итак, проблемные символы кодируются как 84(на самом деле U + 00E4) и 81 (на самом деле U + 00FC), которые я не могу связать ни с какой кодировкой.Любая помощь будет высоко ценится.
Спасибо, Тобиас