エクセルでODBCを使い、MySQLを操作しようとしています。
結論から言うと、文字化けします。
環境:
Windows XP, MySQL 4.1.18,Excel 2003,ODBC 3.51
C:\WINDOWS\my.ini
には、
[mysqld]
default-character-set=ujis
[mysql]
default-character-set=ujis
[mysql-dump]
default-character-set=ujis
C:\Program Files\MySQL\MySQL Server 4.1\my.iniには
[mysql]
default-character-set=ujis
[mysqld]
default-character-set=ujis
MySQL Command Line Clientから
"SHOW VARIABLES LIKE '%char%'"
と入力すると
character-set_client : ujis
character-set_connection : ujis
character-set_database : ujis
character-set_results : ujis
character-set_server : ujis
character-set_system : utf8
という状態です。
このままではいけないだろうとは分かっていますが、my.iniなどをいろいろ変更してみても上手くいかず、とりあえず、変更前の状態にいったん戻しています。
現状では「日本語」という文字列をINSERTしたつもりが、「日?{語」となってしまいます。
この問題に対して、
①MySQLの設定を変える
②設定を変えずにエクセル側で対処する
③設定を変えず、MySQLのテーブル作成時などに個別にcharsetを指定する
教えていただきたいと思います。
②や③がベターです。
よろしくお願いします。
どのようにMySQLへの接続を行い、どのような処理をなさっているのかよく分からないので外しているかもしれませんが、基本に立ち返ってMyODBCの中で「SET NAMES SJIS」を行っているか、確認してみてください。
(クライアントでの文字コードをSJISに設定します。)
たいていはこれで上手く行くはずですが、それでも問題ある場合、DATABASEを作成する際に文字コードをSJISと設定しておけば文字コード変換の必要がなくなり、問題は発生しなくなると思います。
(1つのDATABASE内でTABLEごとに文字コードを変えることも可能だったはずですが、混乱のもとになりますので、避けた方が良いと思います。)
[参考URL]
ODBCのキャラクタ設定でCP932を選択すること。
my.iniはあくまでmysqlのデフォルト設定なので格納されているデータの文字キャラクタを変更するものではない。
クライアント側のコマンドプロンプトでみるならコマンドプロンプトの表示キャラクタの設定をしないと文字化けする。