PHP连接Oracle设置编码问题

通过Navicat连接到数据库

查询当前Orace编码

select userenv('language') from dual;

获取到结果是 AMERICAN _ AMERICA. ZHS16GBK

连接Oracle

new \PDO('oci:dbname=//192.168.1.1:1521/ORCL;charset=ZHS16GBK', 'system', 'pass');

解决查询到的中文数据乱码

$items[]; // 查询到的结果集
while($row = $conn->fetch(PDO::FETCH_ASSOC))
{
    foreach($row as &$value)
    {
        $value = mb_convert_encoding($value, 'UTF-8', 'ZHS16GBK'); // 将其数组子值转换为UTF8编码
    }
    unset($value);
    $items[] = $row;
}
03-11 19:25