php和mssql/sqlsrv—包含问号而不是重音字符的列名

php和mssql/sqlsrv—包含问号而不是重音字符的列名,php,sql-server,utf-8,Php,Sql Server,Utf 8,我正试图从MSSQL 2005数据库将一些报告转储为HTML,但在尝试显示带有重音字符的列名(不是正确显示的列数据本身)时,会出现一个小问题—它们被问号代替 我正在使用PHP的sqlsrv驱动程序,在IIS7下运行。PHP脚本本身是UTF-8编码的。我正在以以下方式连接到SQL server: $connection_info = array("Database" => "ProjectManager", "UID" => DB_USER, "PWD" => DB_PASS

我正试图从MSSQL 2005数据库将一些报告转储为HTML,但在尝试显示带有重音字符的列名(不是正确显示的列数据本身)时,会出现一个小问题—它们被问号代替

我正在使用PHP的sqlsrv驱动程序,在IIS7下运行。PHP脚本本身是UTF-8编码的。我正在以以下方式连接到SQL server:

  $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>";
}
$qry=“EXEC[dbo].[dummy_report]@year=2012,@month=3”;
$res=sqlsrv_查询($conn,$qry);
foreach(sqlsrv_字段_元数据($res)作为$fieldData){
echo“$fieldData['Name']”;
}
这可以很好地处理数据库中存储的数据;列名-不太多:

通常情况下,我不会用斯洛伐克语命名数据库列,但我只是想显示存储过程的结果,我不太喜欢将这些字段名硬编码到PHP脚本中


那么,charsets。怎么办?

我遇到了和你一样的问题。在谷歌搜索了很多次之后,它变成了“针对SQL Server的Microsoft PHP驱动程序”的BUG


请参阅此处的更多信息:。

在驱动程序选项中是否将字符集设置为UTF-8?请参阅:是的,它是在OP中的$connection_info数组中指定的(通过水平滚动条防止被窥视)。“包含…重音字符的列名”哦,天哪。像windYeah,我知道>>我花了几个小时寻找方向/RTFM,但没有找到任何结果(可能是因为显而易见的原因),所以我想在这里问一下。我明天可能会把它编出来。