|
不知道是不是bug。
CI版本1.7.2
oracle配完了,设置的字符集是AL32UTF8 ,(我也不知道为啥oracle的字符集不是UTF8而是这个,工程部门装的)
database.php这么设置的:
$db['default']['char_set'] = "AL32UTF8 ";
用CI进行操作发生错误,具体表现就是汉字内容无法入库,库里的汉字显示成"???",很明显是编码的问题,于是检查了下ci源代码,发现oracle的驱动类的这个方法:
oci8_driver.php
function db_set_charset($charset, $collation)
{
// @todo - add support if needed
return TRUE;
}
没进行任何操作,直接返回true了,mysql和mssql的这个方法就不是。
所以得出结论:数据库使用oracle的时候,字符集设置是不起作用的。
解决方法:
oci8_driver.php 的这两个方法后面多加个参数:
function db_connect()
{
return @ocilogon($this->username, $this->password, $this->hostname,$this->char_set);
}
function db_pconnect()
{
return @ociplogon($this->username, $this->password, $this->hostname,$this->char_set);
} |
|