php - SQLSRV fatal error : Severe error translating Unicode

标签 php sql-server unicode while-loop

我正在尝试在 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 />";
        }
    }
}

经过一番谷歌搜索后,我发现 this link但建议的代码只返回难以理解的乱码。

最佳答案

好的,经过更多谷歌搜索后我发现 this page这表明解决方案是在 sqlsrv_connect 函数中添加一个 CharacterSet 选项。

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

我已经对此进行了测试,效果非常好。

关于php - SQLSRV fatal error : Severe error translating Unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30505116/

相关文章:

php - 使用 PHP 连接到 CMU Sphinx

php重新加载页面而不发布数据

sql-server - 从子查询 SQL 中获取多行

java - 在 Java 中使用正则表达式转义双斜杠

haskell - 为什么 "Níðhöggr"的长度是9?

php - 如何处理 Google Calendar API 推送通知?

javascript - 文件上传后显示对话框(Ajax/PHP/Javascript)

c# - 如何配置连接字符串到 RDS 实例 (MSSQLServer Express)

java - Hibernate 5 插入后更新

unicode - 为什么 Unicode 中没有 "Medium Small Black Circle"