- PR -

MySQL4.1での文字化け

投稿者投稿内容
ゆず
会議室デビュー日: 2005/05/29
投稿数: 18
投稿日時: 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以降を使用したいのですが
どなたかよい方法を教えていただけないでしょうか。


env
会議室デビュー日: 2005/06/14
投稿数: 9
投稿日時: 2005-10-13 11:35
お疲れ様です。

一点ほどですが、
characterEncodingの設定が「EUC_JP」じゃないからとか・・・。
間違っていたらすみません。
ゆず
会議室デビュー日: 2005/05/29
投稿数: 18
投稿日時: 2005-10-13 11:52
すみません。書き間違えてました。

ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" + _
"SERVER=***.***.**.**;" + _
"DATABASE=*******;" + _
"UID=*****;" + _
"PASSWORD=*****;" + _
"SET CHARACTER SET SJIS;"+ _   <----ここ
"OPTION=16834"

でした。
で、特定文字だけ文字化けしてしまいます・・・。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-10-13 12:06
その文字化けはデータベースに格納するときに発生しているのでしょうか?それとも読み出すときの話ですか?MySQLの付属ツールを使えば確認できますよね。
引用:

ゆずさんの書き込み (2005-10-13 11:14) より:
はじめまして。
しかし、いわゆるダメ文字と言われる「能」や「表」など
特定文字のみ文字化けしてしまいます。


この手の文字が化ける原理はご承知でしょうか?

C言語では'\'文字を特殊コードを示すエスケープ文字として使われています。そのため、コンパイル時に'\'コードを含む2バイト文字は、文字の片方がエスケープコードとして認識されて処理が行われます。そして最終的に2バイト文字のうち'\'が無視(削除)されて文字化けが発生します。ただし、これはあくまでコンパイル時の話で、入出力文字列に関してこのような事は発生しません。

VB.NETやSQLは'\'をエスケープコードとしないので、VB.NETが原因でこの手の文字化けが発生することは考えにくいのです。またC言語にしてもコンパイル時に発生する話なので、ODBCドライバ等の不具合とも考えにくいのです。
ゆず
会議室デビュー日: 2005/05/29
投稿数: 18
投稿日時: 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のフォーム上で表示しても
もちろん化けています。
これらのダメ文字以外は化けないのですが・・・。
env
会議室デビュー日: 2005/06/14
投稿数: 9
投稿日時: 2005-10-13 12:47
MySQLの文字コードって、何を設定しますか?
my.cnfファイルの設定でSJISを設定してますでしょうか?

mysql> status

で調べてみて、文字コードがVB.NETと合ってなければ合わせる
必要があると思います。
設定に関しては、Googleなどで調べるとたくさんでます。
未記入
会議室デビュー日: 2005/10/13
投稿数: 3
投稿日時: 2005-10-13 13:04
my.iniにて、こうなってますか?

[mysqld]
default-character-set=sjis
[mysql]
default-character-set=sjis
[mysqldump]
default-character-set=sjis

なってなければ書き加えればOKだと思います。
ゆず
会議室デビュー日: 2005/05/29
投稿数: 18
投稿日時: 2005-10-13 17:38
すみません。
my.iniの中の文字コードがsjisになっていませんでした。
そこで直そうとしたのですが
my.iniの中に

[mysql]
default-character-set=sjis
[mysqldump]
default-character-set=sjis

がみつからないのですがどこにあるのでしょうか。
それとも直接INIファイルの中を書き換えてはいけないものなのでしょうか。

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