在用于SQL Server的Microsoft PHP驱动程序中使用德语字符


Using German characters in Microsoft Drivers for PHP for SQL Server

希望一切顺利。我有一个MS-Sql数据库,我想在php中使用它。我的php版本是5.4,所以我在php中安装了适用于php和Sql Server的Microsoft驱动程序"php_sqlsrv_54_ts.dll"。Beow是我的代码:

        $serverName = "Myserver";
    $connectionInfo = array( "Database"=>"database", "UID"=>"userid", "PWD"=>"password");
    $conn = sqlsrv_connect( $serverName, $connectionInfo );
    if( $conn === false ) {
        die( print_r( sqlsrv_errors(), true));
    }
    $sql = "select * from AVE_Stamm WHERE Strasse='Friesenstraße 20'";
    $stmt = sqlsrv_query( $conn, $sql );
    if( $stmt === false) {
        die( print_r( sqlsrv_errors(), true) );
    }
    while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
          echo $row['Firma'].", ".$row['Strasse']."<br />";
    }
    sqlsrv_free_stmt( $stmt);

我面临的问题是,当我在where子句中使用Ö、É、Ü、ß等德语元音时,查询不会返回任何数据。但如果没有这些,我就会得到数据。请告诉我如何解决这个问题。

问候

连接SQL server时,始终将编码设置为UTF-8。另外,将脚本另存为UTF-8。

MSDN设置连接编码的示例:http://msdn.microsoft.com/en-us/library/cc626307.aspx

或者另一个:http://www.johnro.net/2012/07/25/php-sqlsrv-problems-with-utf-8-values-set-your-characterset-option/

您应该在为数据库搜索创建表时指定排序规则。作为目前的本地修复程序,您只需更改相关表的排序规则即可(或仅其"value"列)转换为"utf8_bin",它将工作:)