現在VB6.0でテキストボックスにUnicodeにはあって
JisやシフトJisにないような文字(例えば立方メートルのような)
を表示させたいのですが文字化けしてしまいます。
いまここでも入力すると立方メートルが ‰ になってしまうのですが。
自分で調べた結果VBはUnicodeで処理をするが内部で出力時に
別の文字コードに変換するということまではわかりました。
バイトデータとして扱えばうまくいくと言うような過去ログもあったのですが
プリンタオブジェクトに対しての処理なので投稿しました。
これの対処方法となぜUnicodeを変換するかなどの詳しいことを教えてください。
Unicodeで処理したい場合は、.NETの方が手軽だったりします。
> プリンタオブジェクトに対しての処理なので投稿しました。
Printerオブジェクトは、Unicode文字をのPrintには対応していません。
修正の手間はそれなりに増えますが、Printerオブジェクトの替わりに、
Unicodeで印刷可能なコンポーネント(例えば、ExcelやWord等)を
利用するか、Unicode版のTextOut API(TextOutW)を使うことで、
Unicode文字を出力させるようにしてみてください。
http://madia.world.coocan.jp/vc/vc_bbs/200302_03020014.html
> 現在VB6.0でテキストボックスにUnicodeにはあって
VB6のテキストボックスもまた、Unicodeに対応していません。
VBから利用可能なUnicode対応コントロールとしては、
DataGrid、DBGrid、WebBrowserなどがあります。
あとは……Microsoft Forms 2.0あたりですかね。
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200306/03060029.txt
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200306/03060044.txt
ちなみに、実行環境がNT系OS(NT4、2000、XP、2003等)の場合は、
APIを使う事で、Unicode対応のテキストボックスを作成できます。
# この場合、テキストボックスに対する全ての処理を
# APIで記述しなければいけないことになりますけれどね。
レス遅れて申し訳ないです。
なるほど。じゃあ今のテキストボックスでは実現不可能ってことですね?
Unicodeの文字をJisやシフトJisに登録し直すことはできるんでしょうか?
> なるほど。じゃあ今のテキストボックスでは実現不可能ってことですね?
そうなりますね。
> Unicodeの文字をJisやシフトJisに登録し直すことはできるんでしょうか?
登録しなおうそうにも、Shift_JISには『立方メートル』の文字が
ないわけですから、結局のところ
・APIなり市販コントロールなりで、どうにか完全Unicode化する。
・外字文字を用意し、それを替わりに利用してもらう。
・JIS第2水準の文字までしか使えない、という仕様にして逃げる。
などといった方法をとるしか無いかも知れません。
わかりました。市販のコントロールを考えてみます。
ありがとうございました。
ツイート | ![]() |