php5でPEAR DBを使用しMS SQL Server2005にアクセスしようと考えています。

php5を内部utf-8で動作させているのですが、普通にSQLを発行するとutf-8のSQL文をSQL Serverが理解してくれないためにエラーになります。なので、どこかで文字コードの変換を行わないといけないと思うのですが、どのように対応するのが良いのでしょうか。
サーバのOSはWindowsです。

回答の条件
  • 1人2回まで
  • 登録:2007/01/23 21:55:56
  • 終了:2007/01/26 00:14:22

回答(2件)

id:vector_xenon No.1

vector回答回数113ベストアンサー獲得回数42007/01/24 10:37:24

ポイント24pt

SQL ServerはShift_JIS(MS932)で動作しているはずですので、クエリをShift_JISに変換すれば大丈夫だと思います。

$sQuery = "・・・・・"
$sQuery = mb_convert_encoding($sQuery, 'SJIS', 'UTF-8')
id:dambiyori

ええ、それは理解しているんですが、その処理をどこで行うか(都度変換するとか、PEAR DBをラップするとか、PEAR DBに手を入れるとか。)あるいは、別の良い方法があるとかといったご意見が聞きたかったのです。

よろしくお願いします。

2007/01/24 18:52:05
id:vector_xenon No.2

vector回答回数113ベストアンサー獲得回数42007/01/24 19:07:27

ポイント46pt

PEAR::DBを直接変更しても、アップデートするとまた直さないといけなくなるので、ラップするのがベターかと思います。


まぁPEAR::DBをそのまま使うってことはあんまりしませんし。


ラップしたオブジェクトのクエリを実行するメソッドに、クエリの文字コードを変換する処理を加えれば、必要なくなったときや、元の文字コードが変わったときに修正が容易になると思います。

id:dambiyori

なるほど、確かに、アップデートに伴うメンテナンスを考えるとそうですね。ありがとうございました。

2007/01/24 19:38:59

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません