こんばんわ。いつもログにはお世話になっています。
たきと申します。
CString sql_cmd = insert into DB ( column ) values ( ;
sql_cmd += \";
1. sql_cmd += らりるれろ;
sql_cmd += \ );
// SJISをEUCに変換してくれる(コピペしました^^:)
sql_cmd=SJIStoEUC(sql_cmd);
2. AfxMessageBox( sql_cmd );
// EUCをSJISに変換してくれる(コピペしました^^:)
AfxMessageBox( EUCtoSJIS( sql_cmd ) );
このようなソースで2.に期待していた文字(insert into DB ( column ) values (らりるれ
ろのEUC文字) )が表示されませんでした。後ろのが抜けてしまったです。
そのため不完全なSQL文になってしまい、困っています。
1.をあいうえおにするとうまく表示できました。
開発環境はWin2000 MFCです。
VC初心者ですがよろしくおねがいします。
この文章を書いていて問題点があるとしたらSJIStoEUC()が
可能性として一番問題がありそうだとは思いませんでしたか?
自作関数か何かだろうけど、これを提示しないと誰も答えられないと思うよ
下記はEUCコードとVCでの表示についてです
ダブルクオーテーションがあるか無いかはバイナリで見たと思うけど
本当に0x22が無いのを確認しました?
ちょっと試したところ、らりるれろをEUCにしてVCでそのまま表示させると
0xa4、(半角)
0xe9鬢
0xa4
0xea熙
0xa4
0xeb・(私のマシンではフォント無し)
0xa4
0xec・(私のマシンではフォント無し)
0xa4
0xed・(私のマシンではフォント無し)
0x22
0x00
こんな表示になりますが、コード上では問題ないと思うけど
VCで文字をそのまま見ようと思っても、コードの右のやつが表示されていると思うよ
しまった、よく見たら二つの関数を使っているのね
書かなくても想像ついていると思うけど
SJIStoEUC()でEUCに変換したときに間違っているか
EUCtoSJIS()でSJISに変換したときに間違っているか
のどちらかです
レスおそくなって申し訳ありません。
結果から言えば解決しました。
SJIStoEUC()、EUCtoSJIS()に関してはHPからのコピペで一切手は加えていないので
大丈夫だとおもいます。変換後の16進数で表示したものは期待通りの結果になってました。
なにがいけなかったかというと、みてのとおりSQLコマンド作成しています。
その使用しているデータソースの設定がEUCになっていてそこをSJISに変えたら
期待通りの結果が返ってきました。
細かいことは良くわからないのですが、とりあえずこれで解決とさせていただきます。
即レスくれたkuありがとうございました。
すいません。「さん」が抜けてました。
大変失礼しました。_(._.)_
即レスくれたkuさんありがとうございました。