Yii2 连接Oracle数据库,解决字符集问题。

最近在做一个项目,需要用Oracle数据库,在Yii2 中连接Oracle数据库过程中因为Oracle数据库编码是“ZHS16GBK”,页面字符统一为UTF-8,所以读取数据总会出现乱码,像这样“??????”全部是问号的乱码。很让人崩溃的事情。最后通过网友指点。才找到根本原因。

一、Yii2 连接Oracle数据库

//Oracle数据库连接配置 'dsn' => 'oci:dbname=//localhost/test;charset=ZHS16GBK', 'username' => 'test', 'password' => 'test',

重点在于“charset”的设置,一定是在‘dsn’语句里。官网的说明里把charset单独列为一个配置项。一直误导我。MySQL可以单独一行配置charset,而Oracle只能配置在‘dsn’语句里。

二、读取数据字符集转换

通过上面设置的数据库配置,读取Oracle数据的时候,传输到页面上是会出现乱码的。因为字符集不统一。数据读取的字符集为GB2312的。而页面的字符集为UTF-8。那么就得用到一个方法来转换我们查询出来的数据。

方法如下:

$name = iconv("GB2312", "UTF-8//IGNORE", $v['NAME']);

把读取的数据转换成UTF-8字符集,再输出。就可以正常显示中文了。

comments powered by Disqus