DOBON.NETプログラミング掲示板過去ログ
ODBCでMySQLを使う時の文字化けについて
題名: ODBCでMySQLを使う時の文字化けについて
著者: ラヂオ
日時: 2008/11/17 15:55:54
ID: 23387
この記事の返信元:
(なし)
この記事への返信:
(なし)
ツリーを表示
環境/言語:[OS : Windows XP Professional / 言語 : Visual Basic .NET / .NET Framework : 3.5]
分類:[.NET]
【解決したい問題】
VB .NETからODBCを使いMySQLを使いたいのですが、文字列型のデータ格納・取得がうまくいかず困っています。
接続に問題はありませんでした。
整数int型や日付date型は正常に格納・取得出来ますが、文字列の格納・取得が上手くいきません。
VB .NETからSQLを発行した時、データベースとVB間の文字コードが合わないようです。
具体的には、下記のようなテーブルがあった時、
mysql> select * from keyword_search where keyword like '声';
+-----+--------------+-------+---------+
| id | modification | count | keyword |
+-----+--------------+-------+---------+
| 389 | 2008-11-17 | 1234 | 声 |
+-----+--------------+-------+---------+
同じSQLをVB .NETから発行した場合に、レコードが取得出来ません。
また、INSERT文でレコードを挿入する場合、文字化けしてしまいます。
プログラムでエラーは出ず、正常終了します。
お力添えをお願い致します。
・環境
VB.NETのプログラム側:
OS:Windows XP Professional Edition
Visual Basic 2008 Express Edition
データベース側
OS:Fedora 9
MySQL:
サーバーversion:5.0.51a Source distribution
プロトコルversion:10
mysql>SHOW VARIABLES LIKE 'character\_set\_%';の実行結果
+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
+--------------------------+--------+
【解決するために何をしたか】
1.ODBCのConnectionStringにSTMTを追加してみました。
・STMT=SET CHARACTER SET utf8;を追加した場合
INSERT文を発行したらテーブル上のレコードが追加されます。追加された文字列のフィールドは空欄になります。
・STMT=SET CHARACTER SET ujis; または
STMT=SET CHARACTER SET sjis;を追加した場合
INSERT文を発行したらテーブル上のレコードが追加されます。追加された文字列のフィールドは文字化けした文字列が格納されます。
2.MySQLに、skip-character-set-client-handshakeの設定を追加しました。
INSERT文を発行した時、STMTでどの文字コードを選択しても追加したレコードに空の文字列が格納されるようになりました。
DOBON.NET
|
プログラミング道
|
プログラミング掲示板
分類:[.NET]
【解決したい問題】
VB .NETからODBCを使いMySQLを使いたいのですが、文字列型のデータ格納・取得がうまくいかず困っています。
接続に問題はありませんでした。
整数int型や日付date型は正常に格納・取得出来ますが、文字列の格納・取得が上手くいきません。
VB .NETからSQLを発行した時、データベースとVB間の文字コードが合わないようです。
具体的には、下記のようなテーブルがあった時、
mysql> select * from keyword_search where keyword like '声';
+-----+--------------+-------+---------+
| id | modification | count | keyword |
+-----+--------------+-------+---------+
| 389 | 2008-11-17 | 1234 | 声 |
+-----+--------------+-------+---------+
同じSQLをVB .NETから発行した場合に、レコードが取得出来ません。
また、INSERT文でレコードを挿入する場合、文字化けしてしまいます。
プログラムでエラーは出ず、正常終了します。
お力添えをお願い致します。
・環境
VB.NETのプログラム側:
OS:Windows XP Professional Edition
Visual Basic 2008 Express Edition
データベース側
OS:Fedora 9
MySQL:
サーバーversion:5.0.51a Source distribution
プロトコルversion:10
mysql>SHOW VARIABLES LIKE 'character\_set\_%';の実行結果
+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
+--------------------------+--------+
【解決するために何をしたか】
1.ODBCのConnectionStringにSTMTを追加してみました。
・STMT=SET CHARACTER SET utf8;を追加した場合
INSERT文を発行したらテーブル上のレコードが追加されます。追加された文字列のフィールドは空欄になります。
・STMT=SET CHARACTER SET ujis; または
STMT=SET CHARACTER SET sjis;を追加した場合
INSERT文を発行したらテーブル上のレコードが追加されます。追加された文字列のフィールドは文字化けした文字列が格納されます。
2.MySQLに、skip-character-set-client-handshakeの設定を追加しました。
INSERT文を発行した時、STMTでどの文字コードを選択しても追加したレコードに空の文字列が格納されるようになりました。