データベース日本語出力

解決


むうり  2005-11-10 23:05:01  No: 18595

超初心者・無知なので的外れな質問だったら申し訳ありません。

データベースに格納されているデータを出力(DBGridなどで)しようとすると、日本語のデータがうまく出力されません(?と出ます)
これは、DBの自作データでも、本についていたCDのサンプルDBデータでも同じでした。(ちなみに本はInprise社から出ているDelphi5オフィシャルコースウェアです。プログラムを実行すると自動的にテーブルが作成され、使えるようになりました)
文字コードの問題だと思って、DBの自作データ(EUC)をSJISに変換して出力してみましたが状況が変わりませんでした。

BDE、ADOで試しましたが変わらず…。

当方Delphi7、DBはMySQLです。
英語のデータに関しては問題なく出力されています。

もし何かお気づきの点、ご指摘などありましたらご教授願います。


にしの  2005-11-11 02:59:32  No: 18596

https://www.petitmonte.com/bbs/answers?question_id=1041
これじゃないですか?
この掲示板でMySQLというキーワードで検索しただけですが・・・。


むうり  2005-11-11 03:25:31  No: 18597

にしのさん、回答有難うございます。

>https://www.petitmonte.com/bbs/answers?question_id=1041
>これじゃないですか?
>この掲示板でMySQLというキーワードで検索しただけですが・・・。

あ、一応そちらも参考にしました。
おそらくほぼ同様の手段で、文字コードを変換してやりましたが状況変わらずなのです。

で、新たな問題が…。
文字コードの変換と調査は、jconvert.pas 1.4(EarthWave Soft(IKEDA Takahiro))を使わせて頂いています。
これの、文字コード調査関数を使ってDBから取ってきた日本語データの文字コードを調べてみたのですがEUCじゃなくなっているんです。(ASCIIとか言われてしまいました…もしくは判定不可能なのかも)
再度DB側を調査しましたがしっかりEUCに設定されているのですが…。

また、逆にアプリ側から入力データの登録を行おうと試みました。
入力フォームのCharsetはShiftJISになっているので、入力データをEUCにコンバートして、INSERT…とやってみたら、見事化けてしまいました(泣)
他の1byte文字データの登録や表示などは何ら問題ないのですが…あとは日本語だけです。

わからないことだらけで、うまく説明すらできませんが、もしお分かりになることがあれば教えていただきたいです。よろしくお願いします。


ヨーダ  2005-11-11 03:48:54  No: 18598

私も最近引っかかった問題で「ドライバが勝手にエンコードする」というものです。
最近のODBCPostgreSQLドライバなどではご本尊がUTF-8でも読み書きはSJISにできることもあるようですが、これではないですか?
二重にエンコードすれば、文字化けしてしまいます。

解決できないかもしれませんが、出力文字の化け方パターンを見てみたい気がします。

力不足かもしれませんがヨロピクミン。


にしの  2005-11-11 06:19:28  No: 18599

Delphi7
MySQL 3.23.58-nt
MyODBC-3.51.11-2-win.exe
でGetTextイベントにEUC->SJISの処理を書いたところ、ちゃんと変換されています。
# Web開発用なので環境がちょっと古いのですが

ヨーダさんのいう問題なのかもしれません。
まずはnkfなどで、生のデータがどの文字コードで取得されているかチェックしてみてはどうでしょう。


むうり  2005-11-14 20:15:52  No: 18600

ヨーダさん、にしのさん回答有難うございます。
返信が遅れてごめんなさい。

結局その後、文字コードを調べるとか色々してたのですが、"SET NAMES sjis"を一番最初に流してやることでとりあえず解決となりました。
(他の言語で使ってたのに気づきませんでした…(汗))
当方MySQL 4.1.14を使用しているので、SET NAMESを使って動くようになりましたが、バージョンによってはこれが使えないので根本的な解決にはなっていないかもしれません…。

とりあえず個人的に問題が解消されたので、ここで解決とさせていただきます。
有難うございました。


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

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






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