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

时间:2014-09-19 08:26:20

标签: php sql sql-server

希望一切都好。我有一个MS Sql数据库,我想在PHP中使用。我的php版本是5.4所以我在PHP中安装了PHP驱动程序的PHP驱动程序'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子句中使用Ö,Ä,Ü,ß等德语元音时,查询不会返回任何数据。但没有它,我得到了数据。请告诉我如何解决这个问题。

此致

2 个答案:

答案 0 :(得分:1)

连接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/

答案 1 :(得分:0)

在为数据库搜索创建表时,应指定排序规则。 作为现在的本地修复,您只需更改相关表的排序规则即可 (或只有"value"列)到"utf8_bin",它会起作用:)