[Tep-j-general] Re: 生年月日と都道府県入力についての不具合。

Back to archive index

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/




Tep-j-general メーリングリストの案内
Back to archive index