SQLSRV致命错误:翻译Unicode时出现严重错误


SQLSRV Fatal error: Severe error translating Unicode

我试图在PHP中运行一个SQL Sever数据库的基本while循环。我得到以下错误:

Fatal error: Severe error translating Unicode

代码在另一个脚本上工作,所以我认为这与我正在查询的表有关。这是我使用的代码

if(isset($_GET['uid']) && $_GET['uid'] != ''){
$uid = $_GET['uid'];
// check for user
$staffSQL = "SELECT * FROM staff WHERE userid = '".$uid."'";
$params = array();
$staff = sqlsrv_query( $conn, $staffSQL, $params, array("Scrollable"=>"buffered"));
$numStaff = sqlsrv_num_rows($staff);
if($numStaff  < 1){
    $response["error"] = TRUE;
    $response["error_msg"] = "No projects found!";
}else{
    while( $row = sqlsrv_fetch_array( $staff, SQLSRV_FETCH_ASSOC) ) {
        foreach($row as $key => $value) {
            echo "$key = $value <br />";
        }
    }
}

经过一些谷歌搜索,我找到了这个链接,但建议的代码没有返回什么,但难以理解的胡言乱语。

OK,所以经过更多的谷歌搜索,我发现这个页面说,解决方案是在sqlsrv_connect函数中添加一个字符集选项。

$result = sqlsrv_connect($hostname, array(
    'UID' => $username,
    'PWD' => $password,
    'Database' => $database,
    'ConnectionPooling' => ($pooling) ? 1 : 0,
    "CharacterSet" => "UTF-8"       // <---- voila
));

我已经测试过了,效果很好。