- PR -

皆さんはどうしてますか?mysql

投稿者投稿内容
みっくん
会議室デビュー日: 2006/02/14
投稿数: 5
投稿日時: 2006-02-14 18:47
現在mysql4.0を使用しています。
my.iniの設定は必要項目をujisで設定しています。
PHPで入力した値(EUC-JP)をmysqlに保存しました。
すると、コマンドプロンプトよりselect文で抽出すると
Shift-JISで入力した後のEUC-JP出力みたいに文字化けします。

この入力された物をhtml(EUC-JP)で出力するとちゃんと表示されるのですが、
直接プロンプトで編集したい時に2バイト文字は文字化けしている為、
見にくくて仕方ありません。プロンプト側での表示を何とか日本語にしたいのですが、
方法はあるのでしょうか?
Shift-JISでmysqlに入力すると上手く日本語になってくれます。
原因が分かる方、ぜひ教えて頂きたく思います。
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2006-02-14 19:13
http://dev.mysql.com/doc/refman/4.1/ja/charset-connection.html
このあたりの設定では、どうにもできないですか?

#追記
http://dev.mysql.com/doc/refman/4.1/ja/charset-collate.html
このあたりも関係ありますかね?



[ メッセージ編集済み 編集者: 夏椰|。σ)o 編集日時 2006-02-14 19:15 ]
みっくん
会議室デビュー日: 2006/02/14
投稿数: 5
投稿日時: 2006-02-14 22:54
有難う御座います。
一度試してみます!!
みっくん
会議室デビュー日: 2006/02/14
投稿数: 5
投稿日時: 2006-02-15 00:08
何度か試しましたが駄目でした。。。
通常EUC-JPで送信された文字列はMysql内で保存される場合、EUC-JPの文字コードで
保存されますよね?いろいろネットを徘徊していたのですが
windowsコマンドプロンプト文字コードはShift-JISであるみたい?な事も
記述されていて、結構パニックになったりしています。
php.iniのhttpoutをSJISに修正し、
mysqlから取り出した文字をmb_convertでSJISに変換し、htmlの方でもShift_jisに
した所ちゃんと表示がされるので、当初EUC-JPでmysqlに保存した文字列は
EUC-JPになっていると思われます。

この状態でもプログラムの稼働には問題はないのですが、
sqlのselect文を発行する際に日本語文字列で検索をかけると検出できないので
かなり不便でいらぬ手間がかかるなぁと考えるようになってしまい…

あとmy.cnfというファイルの存在を知ったのですが、
このmy.cnfというのが僕のmysql4.0には入ってなくて、ひょっとすると
それも関係があるのか?と考えているところです。

何かお気づきになった点などあれば何でも教えて頂ければ幸いです。
宜しくお願いします。
Lichtenstein
ベテラン
会議室デビュー日: 2003/11/06
投稿数: 61
投稿日時: 2006-02-15 09:40
Windowsのコマンドプロンプトで、EUC-JPを表示するのは無理です。
(私が知らないだけで、あるかもしれませんが……)

データベースに含まれるアプリが、SJISに変換してくれれば良いわけですが
EUC-JPとSJISの相互変換は鬼門です。かねやんMySQLAdminなどを利用する、
いったんテキストファイルで保存してから処理を行う、という辺りで
妥協することをお勧めします。
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2006-02-15 10:52
こんなことをしてみました。
test3.col1の文字コードをeucjpmsにしてあります。

コード:
mysql> select * from test3 ;
+-------+
| col1  |
+-------+
| あ?お |
+-------+
1 row in set (0.00 sec)

mysql> set character set cp932
    -> ;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from test3 ;
+--------+
| col1   |
+--------+
| あ〜お |
+--------+
1 row in set (0.00 sec)


mysql> insert into test3 values('か〜こ') ;
Query OK, 1 row affected (0.02 sec)

mysql> select * from test3 ;
+--------+
| col1   |
+--------+
| あ〜お |
| か〜こ |
+--------+
2 rows in set (0.00 sec)


今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2006-02-15 10:53
#二重投稿してしまったので、2つ目を削除

[ メッセージ編集済み 編集者: 夏椰|。σ)o 編集日時 2006-02-15 11:02 ]
みっくん
会議室デビュー日: 2006/02/14
投稿数: 5
投稿日時: 2006-02-15 13:12
ベテランさん、やはりそうですか…僕の方でも少し調べ、telnet形式で
EUC-JPに変更してみました。が、やはり無理でした。

少し夏椰さんのsqlを見て、ひょっとすると自分のやってる事そのものが
今回の質問の対象外なような気がしてきました。
自分のmysqlの結果を見て何か思い当たるふしがあればお願いします。
mysql>select title from tablename where no = 21;
+-----------+
| title |
+-----------+
| 、°、ホ、オ、・ |
+-----------+

この状態で、html(euc-jp)ではちゃんと日本語表示がされます。
が、PHPからinsert文でmysqlに保存した際、PHPはEUC-JPで書かれている為、
日本語が上記「、°、ホ、オ、・」に変換されて保存されます。
これはもうサブミットボタン押した際にmb-convertでShift-JISに変換してから
データベースに登録するしかないのでしょうか?
ちなみに上の文字化けは「みのさん」と打っています。

>test3.col1の文字コードをeucjpmsにしてあります。
を読んで、euc-jpでmysqlに保存してもちゃんと日本語化されている?かのように
見えます。

set character set cp932を僕も打ってみました。
すると、、、
ERROR 1115:character set 'cp932' 、マ・オ・ン。シ、ネ、キ、ニ、、、"、サ、

???何故???と沈黙してしまいました。
設定そのものが何か間違っているのかな?とかも思い始めました。



スキルアップ/キャリアアップ(JOB@IT)