サラリーマンのすらすらIT日記

IT関連を中心とした日々を綴ります。
--/--/--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2012/08/29

PHP5.2-ODBCではダメでも、PDOでFirebirdにアクセスすればOK

PHP5.3ではFirebirdのアクセスにPDOなどが使えず、ODBCを使った結果、文字化けが解消しませんでした。文字化けにはいくつかのパターンがあるのですが、そのうちの一つは、文字セットがSJIS_0208で、varchar(8)のフィールドが先頭8文字しか取れていなくて、9文字目以降が変になっているというもの。

Firebirdに詳しくない方なら、「varchar(8)なら8文字のフィールドでしょう?なんで9文字目以降に言及するのか?」と疑問を持つと思います。実はFirebirdでは文字セットがSJIS_0208の場合、varcharの指定長の2倍の長さの文字列を格納できるのです。つまりvarchar(8)なら16文字まで。変な仕様ですが、Firebird専用ドライバはうまく処理してくれます。現に、PHP5.2でPDOを使うと問題なくデータが読めます。ところがODBCではうまくいきません。

今扱っているvarchar(8)のデータは、ユニークな値を持っているのですが、8文字目までだとユニークになりません。なので、ODBCでやっていたのでは肝心なところでうまくいきません。で、PHP5.2/PDO用に作り直している途中です。PHP5.2だとSlim Frameworkの使い方も違ってきます。こんなことなら初めから5.2で作っておくべきでした。

スポンサーサイト

コメント

コメントの投稿

  • URL
  • コメント
  • パスワード
  • 秘密
  • 管理者にだけ表示を許可する

トラックバック

トラックバックURL:http://sookibizviz.blog81.fc2.com/tb.php/1302-154dbf35

■  カレンダー

09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

■  プロフィール

sookibizviz

Author:sookibizviz
仕事の内容やソフトの紹介を交えながら、日々の悪戦苦闘を綴っていきます。

■  最新記事

■  最新コメント

■  最新トラックバック

■  月別アーカイブ

■  カテゴリ

未分類 (64)
BizViz (24)
IT (1119)
計量 (76)
環境 (26)
数学 (181)
ニュース (46)
本 (187)
音楽 (113)
囲碁 (5)
将棋 (26)
ブログ (14)
日記 (19)

■  FC2カウンター

■  検索フォーム

■  RSSリンクの表示

■  QRコード

QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。