テキストボックスでの文字化け

解決


あおいぬ  2003-07-23 01:09:55  No: 107859

現在VB6.0でテキストボックスにUnicodeにはあって
JisやシフトJisにないような文字(例えば立方メートルのような)
を表示させたいのですが文字化けしてしまいます。
いまここでも入力すると立方メートルが ‰ になってしまうのですが。

自分で調べた結果VBはUnicodeで処理をするが内部で出力時に
別の文字コードに変換するということまではわかりました。
バイトデータとして扱えばうまくいくと言うような過去ログもあったのですが
プリンタオブジェクトに対しての処理なので投稿しました。

これの対処方法となぜUnicodeを変換するかなどの詳しいことを教えてください。


魔界の仮面弁士  2003-07-23 02:35:11  No: 107860

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で記述しなければいけないことになりますけれどね。


あおいぬ  2003-07-25 01:16:31  No: 107861

レス遅れて申し訳ないです。
なるほど。じゃあ今のテキストボックスでは実現不可能ってことですね?
Unicodeの文字をJisやシフトJisに登録し直すことはできるんでしょうか?


魔界の仮面弁士  2003-07-25 03:31:54  No: 107862

> なるほど。じゃあ今のテキストボックスでは実現不可能ってことですね?
そうなりますね。

> Unicodeの文字をJisやシフトJisに登録し直すことはできるんでしょうか?
登録しなおうそうにも、Shift_JISには『立方メートル』の文字が
ないわけですから、結局のところ
  ・APIなり市販コントロールなりで、どうにか完全Unicode化する。
  ・外字文字を用意し、それを替わりに利用してもらう。
  ・JIS第2水準の文字までしか使えない、という仕様にして逃げる。
などといった方法をとるしか無いかも知れません。


あおいぬ  2003-07-26 01:51:27  No: 107863

わかりました。市販のコントロールを考えてみます。
ありがとうございました。


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

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






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