CakePHP2.2和读取MS SQL二进制列
我最近接管了一个PHP/CakePHP项目。现在我想将框架从CakePHP1.3更新为CakePHP2.2。数据库服务器是MS SQL server(版本10.50)。我还尝试连接到SQL Server 9.0 SP1版。同样的问题。应用程序连接到DB服务器,可以很好地读取文本数据 如果我想读取blob/binary/image列,就会出现问题。这似乎是一个解码问题,但我不知道它会发生在哪里。在CakePHP1.3版本中,我看到如下内容CakePHP2.2和读取MS SQL二进制列,php,sql-server,cakephp,encoding,pdo,Php,Sql Server,Cakephp,Encoding,Pdo,我最近接管了一个PHP/CakePHP项目。现在我想将框架从CakePHP1.3更新为CakePHP2.2。数据库服务器是MS SQL server(版本10.50)。我还尝试连接到SQL Server 9.0 SP1版。同样的问题。应用程序连接到DB服务器,可以很好地读取文本数据 如果我想读取blob/binary/image列,就会出现问题。这似乎是一个解码问题,但我不知道它会发生在哪里。在CakePHP1.3版本中,我看到如下内容 \x2 \x0\x1xÚmŽÁN„0\x10†_¥öN..
\x2 \x0\x1xÚmŽÁN„0\x10†_¥öN...
在CakePHP2.2版本中,我得到
0220000178DA6D8EC14E8430 ...
存储的项是一个压缩的XHTML文件,附带了一些描述标记。它是由另一个应用程序编写的
我已将应用程序编码设置为UTF-8,并尝试在数据库配置中设置encoding='utf8'字符串(即使它只适用于MySQL)。我已从Microsoft更新了本机SQL客户端。我使用的是带有PHP5.3.8的XAMPP1.7.7安装。我还尝试了使用XAMPP1.8和微软新的SQL-PDO驱动程序进行不同的安装。没有任何帮助
我不知道这个问题是从哪里来的,即使我怀疑是PHP的PDO层/驱动程序
应用程序在CakePHP 1.3上运行良好。
谢谢你的帮助/时间 我已经知道了。这个问题是来自MS的PDO层中的一个已知错误。它可以通过litte函数修复
function hextostr($x)
{
$s='';
foreach(explode("\n",trim(chunk_split($x,2))) as $h) $s.=chr(hexdec($h));
return($s);
}
根据Marko Kozjak在