突然发现php从oracle中取出来的数据全部是"??????"问号,郁闷了许久,走到风哥走过来看了看说:“是不是连接时的字符编码问题呢?”,听后如梦初醒,赶紧打开phpAPI查看一翻,果不其然,oci_connect()函数的第四个参数可用于指定字符编码,这是关键,可是,这个编码应该怎么指定呢?“GBK”?“UTF-8”?——no,这就得看oracle本身用的是什么编码了,先查看一下,获取oracle的字符集,运行“select * from V$NLS_PARAMETERS;”,变量NLS_CHARACTERSET对应的就是我们需要的字符集,我这里就是“ZHS16GBK”,所以,最终的php代码如下:
- $conn = oci_connect($dbuser,$dbpw,$dbhost,"ZHS16GBK");
,修改之后问题解决!