解决方案 »

  1.   

    指定的utf8
    $dsn_con="oci:dbname=mydatabase;charset=UTF8";
    $dbh= new PDO($dsn_con,myusername,myps,array(PDO::ATTR_PERSISTENT => true)); Oracle的字符集是这样的:
      

  2.   

    你看看 zhs16gbk 是否也会截断?(虽然可能乱码了)
      

  3.   

    改为zhs16gbk 确实不再报错了,但是像你说的,统统乱码了。
    我php页面的目前字符集utf8,我要改成什么呢?(我试了下gbk和gb2312也是乱码)
    或者有无其他方式解决?
      

  4.   

    中文乱码倒是没太大关系,可用 iconv('gbk', 'utf-8', '读取的内容') 转一下码问题在于为什么 utf-8 就不行?
    看你的截图,是后面丢了两个字符。那么其他的记录是什么情况呢?
      

  5.   

    实测iconv('gbk', 'utf-8', '读取的内容') 转一下码,没问题了。
    其他我随机找了几个同字段的记录。看上去只有过长的条目被截取了
      

  6.   

    这是pdo_oci驱动的一个缓冲区大小计算错误的bug:
    http://eslizn.com/archives/pdo_oci-large-buffer-patch.html
      

  7.   

    http://my.oschina.net/startphp/blog/195333 用sql也可以解决 cast()