用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2856|回复: 4
收起左侧

[讨论/交流] 这个算CI的bug吗?

[复制链接]
发表于 2009-10-26 19:38:36 | 显示全部楼层 |阅读模式
不知道是不是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);
}
发表于 2009-10-26 19:41:15 | 显示全部楼层
AL32UTF8 好像也不是中文编码把。。。
发表于 2009-10-26 20:00:37 | 显示全部楼层
不是 BUG,是对 Oracle 支持不好,支持最好的就是 mysql 了,这只能等官方完善驱动。
 楼主| 发表于 2009-10-26 20:57:07 | 显示全部楼层
回复 3# Hex


    真是背啊,偏偏这个项目要用ci,数据库用oracle,这俩我都没接触过,发现ci的好多数据操作方法用不了,分页类也出问题。
发表于 2009-10-26 22:17:29 | 显示全部楼层
别用 AR 了,直接用 query 吧

本版积分规则