TAMURA Toshihiko
tamur****@bitsc*****
2003年 7月 9日 (水) 19:59:09 JST
田村です。 原因は MySQL の文字コードが指定できてないためですね。 MySQLで日本語を扱うには、次のような方法で文字コードを指定します。 o コンパイル時のオプション o mysqlサーバの起動時オプション o /etc/my.cnf (Windowsでは\windows\my.ini) の記述 通常はこれらの方法で ujis (EUC-JP) を指定するんですが、 指定しないで文字コードがデフォルトの latin1 になっていると、 日本語の検索がうまくいかないことがあります。 今回のケースで試してみると、次のようになりました。 ------------------------------------------------------------ mysql> select * from zones where zone_name = '香川県'; +---------+-----------------+-----------+-----------+ | zone_id | zone_country_id | zone_code | zone_name | +---------+-----------------+-----------+-----------+ | 218 | 107 | 37 | 香川県 | | 220 | 107 | 39 | 高知県 | +---------+-----------------+-----------+-----------+ 2 rows in set (0.00 sec) mysql> select * from zones where zone_name = '高知県'; +---------+-----------------+-----------+-----------+ | zone_id | zone_country_id | zone_code | zone_name | +---------+-----------------+-----------+-----------+ | 218 | 107 | 37 | 香川県 | | 220 | 107 | 39 | 高知県 | +---------+-----------------+-----------+-----------+ 2 rows in set (0.01 sec) mysql> select COUNT(*) from zones where zone_name = '高知県'; +----------+ | COUNT(*) | +----------+ | 2 | +----------+ 1 row in set (0.00 sec) ------------------------------------------------------------ '香川県'と'高知県'の区別ができないようです。 海外の共用サーバでは、MySQLでユーザ個別の文字コードを指定することが できないでしょうから、対策としては、'香川県'か'高知県'のどちらかの 末尾に(全角?)スペースを加えるくらいしかないと思います。 こうすれば、リストボックスから選ぶことはできます。 -- 田村敏彦 / 株式会社ビットスコープ E-mail:tamur****@bitsc***** http://www.bitscope.co.jp/