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


  2006-02-23 20:08:22  No: 20155

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

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

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

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


  2006-02-23 20:10:14  No: 20156

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


それは…  2006-02-23 21:57:08  No: 20157

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


  2006-02-24 01:49:53  No: 20158

はい。
そちらのログも拝見させていただいたのですが、私も同様に自動変換が行える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-24 02:33:08  No: 20159

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


  2006-02-24 03:43:11  No: 20160

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

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

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

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


ちゃぶ台  2006-02-24 04:38:38  No: 20161

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


エンコード  2006-02-24 05:02:25  No: 20162

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


  2006-02-25 15:43:34  No: 20163

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

>テーブル無かったら、どっちを選ぶ?
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 21:02:24  No: 20164

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


  2006-02-25 21:29:04  No: 20165

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

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

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


とりあえず  2006-02-26 19:02:39  No: 20166

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


エンコード  2006-02-26 19:24:06  No: 20167

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


  2006-02-27 04:36:25  No: 20168

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

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

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


HOta  2006-02-27 16:44:19  No: 20169

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


fake  2006-03-01 20:06:59  No: 20170

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加