0

私は最近、PHP/CakePHPのプロジェクトを引き継ぎました。ここで、フレームワークをCakePHP1.3からCakePHP2.2に更新したいと思いました。DBサーバーはMSSQLServer(バージョン10.50)です。また、SQLSeverバージョン9.0SP1に接続しようとしました。同じ問題。アプリケーションはDBサーバーに接続し、テキストデータを非常にうまく読み取ることができます。

この問題は、blob / binary/image列を読み取りたい場合に発生します。デコードの問題のようですが、どこで発生するのかわかりません。CakePHP 1.3バージョンでは、次のようなものが表示されます。

\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とMicrosoftの新しいSQL-PDOドライバーを使用して別のインストールも試しました。何も役に立たなかった。

PHP用のPDOレイヤー/ドライバーが疑われる場合でも、この問題がどこから来ているのかわかりません。

アプリケーションはCakePHP1.3で正常に動作しました。

あなたの助け/時間をありがとう。

4

1 に答える 1

0

私はすでにそれを理解しました。この問題は、MS の PDO レイヤーの既知のバグです。リット機能で直せます

function hextostr($x) 
{
  $s='';
  foreach(explode("\n",trim(chunk_split($x,2))) as $h) $s.=chr(hexdec($h));
  return($s);
}

http://jeremycook.ca/2010/02/21/handling-binary-data-with-pdo/の Marko Kozjak のコメントから

于 2012-09-07T05:37:06.523 に答える