【MySQL日本語設定】【ODBC】

エクセルで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を指定する
教えていただきたいと思います。
②や③がベターです。
よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/07/02 23:56:15
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:bonlife No.1

回答回数421ベストアンサー獲得回数75

ポイント60pt

どのようにMySQLへの接続を行い、どのような処理をなさっているのかよく分からないので外しているかもしれませんが、基本に立ち返ってMyODBCの中で「SET NAMES SJIS」を行っているか、確認してみてください。

(クライアントでの文字コードをSJISに設定します。)

たいていはこれで上手く行くはずですが、それでも問題ある場合、DATABASEを作成する際に文字コードをSJISと設定しておけば文字コード変換の必要がなくなり、問題は発生しなくなると思います。

(1つのDATABASE内でTABLEごとに文字コードを変えることも可能だったはずですが、混乱のもとになりますので、避けた方が良いと思います。)

[参考URL]

id:Nigitama

回答ありがとうございます。

>どのようにMySQLへの接続を行い、どのような処理をなさっているのかよく分からないので

この部分、大切な情報でした。

VBAを記述して

Function P_CnString() As String

P_CnString = "DRIVER={mysql odbc 3.51 driver};" & "SERVER=localhost;" & " DATABASE=MyDB;" & "UID=MyID; Password=MyPass;"

End Function

というようにして接続をしています。

回答していただいたAll Aboutの記事のように、コンパネからデータソース(ODBC)選んで、「SET NAMES SJIS」の設定をして、Excelの"データ"->"外部データの取り込み"->"新しいデータベースクエリ"で、接続をして見ました。接続はできるのですが、やはり文字化けをしてしまいます。

CREATE DATABASEのときに、DEFAULT CHARACTER SET SJISとしてokが帰ってきていますが、やはり文字化けします。

以前はphpを使ってMySQLに接続していて、文字化け関係はそこそこ解決してきているのですが、今回のVBA,ODBC周りはよく分かりません。。。。

2006/07/02 21:47:27
  • id:uhohoho7
    格納されているバイナリデータのコードによるが日本のwindowsベースのものなら
    ODBCのキャラクタ設定でCP932を選択すること。
    my.iniはあくまでmysqlのデフォルト設定なので格納されているデータの文字キャラクタを変更するものではない。
    クライアント側のコマンドプロンプトでみるならコマンドプロンプトの表示キャラクタの設定をしないと文字化けする。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません