- - PR -
MySQL4.1での文字化け
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-10-13 11:14
はじめまして。
現在、VB.NetからMySQL4.1にODBCを使って接続しています。 しかし、いわゆるダメ文字と言われる「能」や「表」など 特定文字のみ文字化けしてしまいます。 接続文字列等をいろいろ工夫してみたのですが どうしてもうまくいきません。 ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" + _ "SERVER=***.***.**.**;" + _ "DATABASE=*******;" + _ "UID=*****;" + _ "PASSWORD=*****;" + _ "useUnicode=true & characterEncoding=EUC_SJIS;"+ _ "OPTION=16834" サブクエリを使用したいのでどうしてもMySQL4.1以降を使用したいのですが どなたかよい方法を教えていただけないでしょうか。 | ||||
|
投稿日時: 2005-10-13 11:35
お疲れ様です。
一点ほどですが、 characterEncodingの設定が「EUC_JP」じゃないからとか・・・。 間違っていたらすみません。 | ||||
|
投稿日時: 2005-10-13 11:52
すみません。書き間違えてました。
ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" + _ "SERVER=***.***.**.**;" + _ "DATABASE=*******;" + _ "UID=*****;" + _ "PASSWORD=*****;" + _ "SET CHARACTER SET SJIS;"+ _ <----ここ "OPTION=16834" でした。 で、特定文字だけ文字化けしてしまいます・・・。 | ||||
|
投稿日時: 2005-10-13 12:06
その文字化けはデータベースに格納するときに発生しているのでしょうか?それとも読み出すときの話ですか?MySQLの付属ツールを使えば確認できますよね。
この手の文字が化ける原理はご承知でしょうか? C言語では'\'文字を特殊コードを示すエスケープ文字として使われています。そのため、コンパイル時に'\'コードを含む2バイト文字は、文字の片方がエスケープコードとして認識されて処理が行われます。そして最終的に2バイト文字のうち'\'が無視(削除)されて文字化けが発生します。ただし、これはあくまでコンパイル時の話で、入出力文字列に関してこのような事は発生しません。 VB.NETやSQLは'\'をエスケープコードとしないので、VB.NETが原因でこの手の文字化けが発生することは考えにくいのです。またC言語にしてもコンパイル時に発生する話なので、ODBCドライバ等の不具合とも考えにくいのです。 | ||||
|
投稿日時: 2005-10-13 12:30
データベースにInsert文で格納して
Select文で確認した時点で以下のように化けています。 たとえば[user_master]というテーブルに user_group=表参道 user_name=能力 としてInsert文で格納した場合、 mysql> select * from user_master; +------------+-----------+ | User_Group | User_Name | +------------+-----------+ | 侮Q道 | 迫ヘ | +------------+-----------+ 1 row in set (0.00 sec) となって化けてしまっています。 このテーブルの内容をVBのフォーム上で表示しても もちろん化けています。 これらのダメ文字以外は化けないのですが・・・。 | ||||
|
投稿日時: 2005-10-13 12:47
MySQLの文字コードって、何を設定しますか?
my.cnfファイルの設定でSJISを設定してますでしょうか? mysql> status で調べてみて、文字コードがVB.NETと合ってなければ合わせる 必要があると思います。 設定に関しては、Googleなどで調べるとたくさんでます。 | ||||
|
投稿日時: 2005-10-13 13:04
my.iniにて、こうなってますか?
[mysqld] default-character-set=sjis [mysql] default-character-set=sjis [mysqldump] default-character-set=sjis なってなければ書き加えればOKだと思います。 | ||||
|
投稿日時: 2005-10-13 17:38
すみません。
my.iniの中の文字コードがsjisになっていませんでした。 そこで直そうとしたのですが my.iniの中に [mysql] default-character-set=sjis [mysqldump] default-character-set=sjis がみつからないのですがどこにあるのでしょうか。 それとも直接INIファイルの中を書き換えてはいけないものなのでしょうか。 |