【问题标题】:MSSQL question marks in php on windows with apache带有apache的windows上php中的MSSQL问号
【发布时间】:2015-07-17 21:42:09
【问题描述】:

我在 Windows Server 2008 R2 上安装了 Microsoft SQL Server 2008 R2。

还有 Apache 上的 php 5.6。

在 SQL Server 中,我有带有 COLLATE Cyrillic_General_CI_AI 的数据库。

在 SQL Server Management Studio 中,我可以毫无问题地查看所有内容。

但是

然后我这样做:

<?php
$conn = sqlsrv_connect( $serverName, $connectionInfo);
$sql = "SELECT NAME FROM NAMES";
$stmt = sqlsrv_query( $conn, $sql );
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
    echo $row['NAME'];
}

我明白了???????????????问号而不是单词。

重要条件:我只能使用sqlsrv_connect()

请帮助我。 谢谢!

【问题讨论】:

  • 你没有告诉你的输出环境你正在吐出西里尔文字,所以它会以环境使用的任何字符集呈现你的文本,例如iso8859.
  • 你的意思是输出环境? iso8859 去哪儿了?

标签: php sql-server windows sql-server-2008


【解决方案1】:

在浏览器中设置正确的字符集:

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

或通过 PHP 使用:

header("Content-Type: text/html; charset=windows-1251");

【讨论】:

  • 不是浏览器问题。 sqlsrv_fetch_array 获取问号。
  • @AlexanderMatrosov 怀疑。无论您使用什么来查看输出,都可能不知道如何直观地表示数据。如果您没有在浏览器中看到此内容,那么您需要修复正在查看的内容中的编码问题。
  • 不管怎样,这个方法行不通。在带有任何 enoding 的 Chrome 中,我看到了问题
【解决方案2】:

所以。

如果 Microsoft(在地狱中燃烧)没有您在 SQL 服务器中使用的语言的语言包,那么您将看到问号。

要解决它 - 将语言包安装到您的服务器副本。

再次感谢你,微软,你的愚蠢和你不喜欢 utf-8。

【讨论】:

    猜你喜欢
    • 2012-04-15
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    相关资源
    最近更新 更多