php и mssql / sqlsrv - имена столбцов, содержащие знаки вопроса вместо акцентированных символов - PullRequest
2 голосов
/ 29 марта 2012

Я пытаюсь вывести некоторые отчеты в HTML из базы данных MSSQL 2005, но есть небольшая проблема при попытке отобразить столбец имена (не сами данные столбца, которые отображаются правильно), которые имеют акцентированные символы в них - они заменены на вопросительные знаки.

Я использую драйвер sqlsrv для PHP, работающий под IIS7. Сам скрипт PHP имеет кодировку UTF-8. Я подключаюсь к серверу SQL как:

  $connection_info = array("Database" => "ProjectManager", "UID" => DB_USER, "PWD" => DB_PASS , "CharacterSet" => "UTF-8");
  $conn = sqlsrv_connect(DB_HOST, $connection_info) or die("FAIL");

Первым делом после выполнения запроса дамп имен столбцов в таблицу:

$qry = "EXEC [dbo].[dummy_report] @year=2012, @month=3";
$res = sqlsrv_query($conn, $qry);
foreach(sqlsrv_field_metadata($res) as $fieldData) {
    echo "<th>".$fieldData['Name']."</th>";
}

Это достаточно хорошо обрабатывает данные, хранящиеся в базе данных; Имена столбцов - не так много:

enter image description here

Обычно я бы не стал именовать столбцы базы данных на словацком языке, но я просто пытаюсь отобразить результат хранимой процедуры, и мне не очень удобно жестко кодировать эти имена полей в сценарии PHP.

Итак, кодировки. Ват делать?

1 Ответ

1 голос
/ 28 января 2014

Я столкнулся с той же проблемой, что и вы.И после долгих поисков он превращается в ошибку «Драйверы Microsoft для PHP для SQL Server».

См. Дополнительную информацию здесь: PHP sqlsrv 3.0.1 Драйвер: sqlsrv_field_metadata возвращает имя столбца какchar *, поэтому имена столбцов Unicode не могут быть правильно выбраны .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...