PHP 连接 Oracle 设置编码问题,解决 GBK 中文???(问号)乱码

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;
}

Comments