PHP - 从 sqlsrv 数据库中获取 UTF-8 数据

标签 php utf-8 sqlsrv

我正在尝试从 sql server 数据库中获取一些数据并在 json 中打印,但数据库中的一些数据是 UTF-8 (Arabic) 。我在网上搜索并尝试了许多解决方案,但没有一个对我有用,任何帮助将不胜感激。这是我的代码:

<?php

$serverName = "127.0.0.1"; //serverName\instanceName
$connectionInfo = array( "Database"=>"filmnak_com_", "CharacterSet" => "UTF-8", "UID"=>"filmnak", "PWD"=>"G5j^wk44");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

$sql = "SELECT CAST(ID AS INT) AS ID, CAST(Film AS TEXT) AS Film ,CAST(Name AS TEXT) Name FROM dbo.Movies";

$result = sqlsrv_query( $conn, $sql);
if( $result === false ) {
     die( print_r( sqlsrv_errors(), true));
}

    // looping through all results
    // products node
    $response["Info"] = array();
  while ($row = sqlsrv_fetch_array($result)) {
        // temp user array
        $Info = array();
        $Info["ID"] = $row["ID"] ;
        $Info["Film"] = $row["Film"];

      $Info["Name"] = utf8_decode($row["Name"]);

    echo $row["Name"];
        // push single product into final response array
        array_push($response["Info"], $Info);
    }


echo json_encode($response , JSON_UNESCAPED_UNICODE);

sqlsrv_free_stmt($result);


?>

浏览器中的结果:
???? ????1+1?????{"Info":[{"ID":8,"Film":"8O9","Name":"???? ????"},{"ID":9,"Film":"9O3","Name":"1+1"},{"ID":10,"Film":"10O5","Name":"?????"}]}

最佳答案

使用此代码

    $serverName="(local)";
    $connetionInfo = array("DataBase"=>"your db","UID"=>"username","PWD"=>"pass",
                           "CharacterSet" => "UTF-8");<---------------this
    $this->dblink=sqlsrv_connect($serverName,$connetionInfo);

关于PHP - 从 sqlsrv 数据库中获取 UTF-8 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40562738/

相关文章:

Java Http POST ajax 相当于发送结构化数据 JSON

php - 用于 API 响应的 Laravel 自定义包装器

python - Unicode解码错误: 'ascii' codec can't decode byte 0xbe in position 1

php - ReturnDates Strings=>true 返回带有小数点和零的时间戳

php - 在 Laravel DB 中,get with count 和 get without count 哪个效率更高?

php - 如何在用户查看页面时更新页面?

Unicode 字符串上的正则表达式是按调试器的预期解释的,而不是按程序的预期解释的

python - 使用Oracle数据库,编码为UTF-8

php - 使用 PDO 从 PHP 调用存储过程到使用 INPUT 参数的 MYSQL 服务器

php - 将 PDO SQLSRV 与 PHP 一起使用不起作用