dポイントプレゼントキャンペーン実施中!

PostgreSQLでデータベースを構築している初心者です.
現在ブラウザから文字を入力し検索をかけることで,
検索結果を表示するプログラムを作っているのですが,
その際に検索できる文字とできない文字があり困惑しています.

例えば,「医学」と入力するとデータベースからデータがブラウザに表示
されるのですが,「秋山浩二」と入力するとデータはあるのに
表示されないという状況に陥っています.他にも検索できる文字
とできない文字があり,なぜこうなってしまうのか分かりません.
このようなことは何かの設定ミスにより起こりうることなのでしょうか.


何かお気づきの方がいらっしゃいましたら,ご教授をお願いします.

【環境】
Windows XP
PostgreSQL8.0.4

A 回答 (1件)

私はLinuxでeuc-jpを使っているので推測ですが。


Windows XPということは、ひょっとして
DBの文字コードか何かでシフトJISを使っていて
それが原因かもと思います。というのは秋山浩二の浩
という字はシフトJISで0x8D5Fであり、0x5Fは半角下線
(_)に相当します。そして半角下線はSQLのLIKE句において
任意の1字をあらわすワイルドカードになっているためです。

適切に設定されていれば、日本語文字の一部と判定されるべき
浩の字が、何らかの文字コードがらみの設定違いで、8D + 5Fという
2文字と判定され、結果、5Fがワイルドカードであると
誤判定されるなどして起こるのだと思います。

従って、文字コード関係の設定を洗ってみてはどうでしょうか。

この回答への補足

文字コードを洗ってみましたが中々設定ミスが見つかりません….

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

補足日時:2005/07/05 20:55
    • good
    • 0
この回答へのお礼

自己解決しました.select … where like '%秋山浩二%'というようにSQL文を作ればいいみたいです.

以前同じような質問があったみたいで,情報収集不足でした.お騒がせしました.

お礼日時:2005/07/05 21:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す