2009-08-05 6 views
5

は、私は、次のコードを持っている:$ connはMSSQL ServerへのDSN ODBC接続でPHPでのUnicode文字の挿入 - > ODBC - > MS SQL?

$sql = "update tbl_test set category = N'resumé'; 

echo $sql; 

$rs=odbc_exec($conn,$sql); 

。この問題は、PHPとMySQLの間のどこか(つまりODBC?)のUnicode文字が迷惑メールに変換されているようです。エコーを直接Enterprise Managerに貼り付けてコピーすると、MS SQLに問題なく挿入されます。しかし、私はコードを実行する場合は、常にresuméとしてMSSSQLに行く。私がここで何を欠いているのか?

答えて

4

問題はODBCではありませんでしたが、PHPの解決策はデータベースから返された文字列に対してutf8_decode()を使用することでした。

0

私はここで注意深く踏み込んでいます。以前は、SQL ServerとPHPの統合を扱う際に、SQL Serverが実際にUnicode文字に必要な記憶域の3〜5倍を使用するケースが発生しました。データベースへの接続方法とデータのエンコード方法によって異なります。私の理解では、MSFTは問題を解決し、一般的にPHPの統合を改善する新しいドライバを開発中です(またはしばらく外に出ている可能性があります)。古いスタックのいくつかでは、問題が発生する可能性があります。 DB内のデータサイズを調べて、接続がデータを埋めていないことを確認することをお勧めします。ヤコブ

1

あなたがWindows上で、SQLネイティブクライアントでPDO_ODBCを使用して、PHP 5.3を実行している、とあなたの入力テキストはUTF-8である場合

、これはちょうど、自動的に動作するはずです。

関連する問題