EUCのMySQLのデータをSJISで表示させるには?


 2006-02-23 11:08:22  No: 20155  IP: 192.*.*.*

はじめまして。
いつもは過去ログを参考にさせていただいているのですが、
今回はどうしてもうまくいかないので質問させてください。

linuxサーバー上にあるMySQLデータベースに、windowsからMySQLODBCを利用して接続してDBGridに結果を表示させようとすると文字化けしてしまいます。

DBGridのFontプロパティに文字コードを設定する
Charsetという項目があったのですが、SJISはあってもEUCはありませんでした。

どのようにすればEUCで動いているデータベースのデータを文字化けすることなく表示できるのでしょうか?

編集 削除
 2006-02-23 11:10:14  No: 20156  IP: 192.*.*.*

windowsXP
Delphi2005
を使用しています。書き忘れました。

編集 削除
それは…  2006-02-23 12:57:08  No: 20157  IP: 192.*.*.*

この掲示板の全トピックから単語:「かころぐ」を検索してみましょう。

編集 削除
 2006-02-23 16:49:53  No: 20158  IP: 192.*.*.*

はい。
そちらのログも拝見させていただいたのですが、私も同様に自動変換が行えるODBCはEUC変換を行うというオプションを設定してもエラーが発生し、なぜか接続できなくなってしまうのです。

procedure TForm1.Table1Field1GetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
  Text := EUCtoSJIS(Sender.AsString);
end;

こちらも、私はtableを使用しておらず、
TADOConnection;
TADODataSet;
TDataSetProvider;
TClientDataSet;
TDataSource;
TDBGrid;
以上を使用してDBGridにtableに表示させているので、どのように応用すればよいのかが分からず、あと、Sender.AsStringの部分も、ここに文字化けを直したいテーブル情報を入れればよいと思っているのですが、上の5つを接続したらすぐ、DBGridに文字化けではありますがテーブル情報が写ったので、コードは白紙に近く、なにを代入したらよいのかがわかりません。

どのようにしたら良いのでしょうか?

編集 削除
HOta  2006-02-23 17:33:08  No: 20159  IP: 192.*.*.*

Helpでみると、TDBGridのCharsetには、表示するもの以外にもいろいろあるようです。セットしてみればどうでしょうか?

編集 削除
 2006-02-23 18:43:11  No: 20160  IP: 192.*.*.*

それは・・・さん、HOtaさん、ありがとうございます。
結構いっぱいっぱいで御礼が遅れてしまいました。すみません。

>Helpでみると、TDBGridのCharsetには、表示するもの以外にもいろいろあるようです。セットしてみればどうでしょうか?

FontのCharsetの、SHIFTJIS_CHARSETというのを見つけ、セットして実行してみましたが残念ながら変わりませんでした。

あとは、どのような方法があるのでしょうか?

編集 削除
ちゃぶ台  2006-02-23 19:38:38  No: 20161  IP: 192.*.*.*

テーブル無かったら、どっちを選ぶ?
ちゃぶ台 DataSource1.Dataset.Fields[n].OnGetText
あぐら膳 DBGrid1.DataSource.Dataset.Fields[n].OnGetText

編集 削除
エンコード  2006-02-23 20:02:25  No: 20162  IP: 192.*.*.*

前にも書いた、本体がEUCであってドライバが勝手にSJISに直してくれたのを気づかないで一生懸命エンコードしてたというわけではありませんかよね。わたしは半日無駄にしましたが・・・。
> エラーが発生し、なぜか接続できなくなってしまうのです。
これはどのようなエラーなのですか?

編集 削除
 2006-02-25 06:43:34  No: 20163  IP: 192.*.*.*

ちゃぶ台さん、エンコードさん、ありがとうございます。

>テーブル無かったら、どっちを選ぶ?
DataSource1.Dataset.Fields[n].OnGetTextこちらを選べばよいのでしょうか?
procedure TForm1.DataSource1.Dataset.Fields[n].OnGetText
使い方は、このような形でいいのでしょうか?

>これはどのようなエラーなのですか?
Client does not support authentication protocol requested by server; consider upgrading MySQL client

このようなエラーが出てしまいます。
何が原因なのでしょうか?

編集 削除
う〜ん  2006-02-25 12:02:24  No: 20164  IP: 192.*.*.*

イベントハンドラの書き方も分かってない?

編集 削除
 2006-02-25 12:29:04  No: 20165  IP: 192.*.*.*

う〜んさん、レスありがとうございます。

すみません。本当に何も分からず、手探り状態です。
本やネットを見つつ今まで何とかやってきましたが、どうしてもこの先に進めず、お手上げ状態です。

なんとしても、この文字コードの変換をしたいので、お力お貸しいただけませんか?

編集 削除
とりあえず  2006-02-26 10:02:39  No: 20166  IP: 192.*.*.*

TFieldのOnGetTextのヘルプ見てみたら?

編集 削除
エンコード  2006-02-26 10:24:06  No: 20167  IP: 192.*.*.*

次の疑問です。
おそらくSELECT文でテストされているとおもいますが、もしやその中に日本語(SJIS)を入れているなんてことないでしょうか?
>Client does not support authentication protocol requested by server; consider upgrading MySQL client
は送信時のエラーに関するもののように私は感じますがいかがです?
該当するのであればSELECT文のエンコードを推奨します。

編集 削除
 2006-02-26 19:36:25  No: 20168  IP: 192.*.*.*

とりあえずさん、エンコードさん、ありがとうございます。

>TFieldのOnGetTextのヘルプ見てみたら?
はい、すみません。もっと勉強します。

>もしやその中に日本語(SJIS)を入れているなんてことないでしょうか?
いいえ、SELECT * FROM request;このようにしています。
ほかに、なにか問題になりそうなことはありますか?教えてください。

編集 削除
HOta  2006-02-27 07:44:19  No: 20169  IP: 192.*.*.*

皆さんがおっしゃっていることは、TADODataSetを右クリックして、
項目の設定から、項目を追加すると表示されるTFieldのイベントで
処理すればどうでしょうかということです。
やってみる価値はあります。

編集 削除
fake  2006-03-01 11:06:59  No: 20170  IP: 192.*.*.*

もしかしてこれかな?
http://tod.cocolog-nifty.com/diary/2005/12/xamppphpmysql_6279.html

XAMPP上のPHP+MySQL文字化け解決
「SET CHARACTER SET SJIS;」というコマンド

編集 削除