• 締切済み

検索できる文字とできない文字

PostgreSQLでデータベースを構築している初心者です. 現在ブラウザから文字を入力し検索をかけることで, 検索結果を表示するプログラムを作っているのですが, その際に検索できる文字とできない文字があり困惑しています. 例えば,「医学」と入力するとデータベースからデータがブラウザに表示 されるのですが,「秋山浩二」と入力するとデータはあるのに 表示されないという状況に陥っています.他にも検索できる文字 とできない文字があり,なぜこうなってしまうのか分かりません. このようなことは何かの設定ミスにより起こりうることなのでしょうか. 何かお気づきの方がいらっしゃいましたら,ご教授をお願いします. 【環境】 Windows XP PostgreSQL8.0.4

みんなの回答

  • darkside
  • ベストアンサー率53% (8/15)
回答No.1

私はLinuxでeuc-jpを使っているので推測ですが。 Windows XPということは、ひょっとして DBの文字コードか何かでシフトJISを使っていて それが原因かもと思います。というのは秋山浩二の浩 という字はシフトJISで0x8D5Fであり、0x5Fは半角下線 (_)に相当します。そして半角下線はSQLのLIKE句において 任意の1字をあらわすワイルドカードになっているためです。 適切に設定されていれば、日本語文字の一部と判定されるべき 浩の字が、何らかの文字コードがらみの設定違いで、8D + 5Fという 2文字と判定され、結果、5Fがワイルドカードであると 誤判定されるなどして起こるのだと思います。 従って、文字コード関係の設定を洗ってみてはどうでしょうか。

k-masa1
質問者

お礼

自己解決しました.select … where like '%秋山浩二%'というようにSQL文を作ればいいみたいです. 以前同じような質問があったみたいで,情報収集不足でした.お騒がせしました.

k-masa1
質問者

補足

文字コードを洗ってみましたが中々設定ミスが見つかりません…. 基本的に文字コードはEUC-JPで統一しているつもりでいます.「浩」以外に検索されない文字として「統」「也」などがあります.このことから,やはりどこかの文字コードがシフトJISに設定されていることが原因だと推測されるでしょうか…?

関連するQ&A