VBでUnicode文字の入力、表示

解決


まさ  2005-10-27 02:03:50  No: 126937

こんにちは。初めまして。
いつもこちらのHPを拝見して勉強させていただいてます。

今回、VB6.0(Windows XP)で作成しているツールで、Unicode文字の
入力、表示、ファイル出力(UTF16BE)を実現させるべく調査中です。
VB標準のコントロールでは、Unicodeに対応していないとのことで、
こちらのサイトにも掲載されていた、WebBrowserを使用してUnicode対応の
テキストボックスを作成してみましたが、私用領域(E000-F8FF)に定義
されているUnicode文字が正しく表示されません。(「・」になります)

ファイルの入出力は正常に動作しており、入力時およびファイル読み込み時の
文字列をダンプしてバイトオーダーを比較したところ一致しています。
同じバイトオーダーにもかかわらず、入力した文字にマッピングされないので、
何が原因なのかがさっぱりわからないのです。

ご教授いただけないでしょうか?


魔界の仮面弁士  2005-10-27 03:13:31  No: 126938

> 私用領域(E000-F8FF)に定義されているUnicode文字が
> 正しく表示されません。(「・」になります)
こちらの環境では、状況を再現できません。

とりあえず手元の環境で、
  WebBrowser1.Document.write "たとえば「" & ChrW(&HE000) & "」とか。"
のようにして、WebBrowser に外字を渡してみましたが、問題なく、
作成した外字を表示する事ができています。

ただし、ファイルを渡す手法(IPersistFile経由 or Navigateメソッド)の場合は、
UTF-16BE のファイルを渡すと、文字コードの判定に失敗してしまいましたが、
それも、BOM付きのUTF-16ビッグエンディアンならば問題ありませんでしたし。

> 入力した文字にマッピングされないので、
WebBrowser にどのように表示させるのか、にもよりますが、
とりあえず関係がありそうな所としては、.document.charset や
.document.body.runtimeStyle.font、あるいは lang 設定あたりでしょうか。


まさ  2005-10-27 20:40:20  No: 126939

お忙しいところ回答ありがとうございます。
どうにか解決することができました!

今回使用しているフォントは独自のフォントで、WebBrowserで作成している
コントロール側で明示的にフォントを指定しなければならなかったようです。

魔界の仮面弁士さんがおっしゃった
>> 入力した文字にマッピングされないので、
>WebBrowser にどのように表示させるのか、にもよりますが、
>とりあえず関係がありそうな所としては、.document.charset や
>.document.body.runtimeStyle.font、あるいは lang 設定あたりでしょうか。
これをヒントに下記のようにフォントを指定しました。

    Set TextControl = doc.CreateElement("INPUT")
    TextControl.Type = "text"
    With TextControl.runtimeStyle
        .Width = "100%"
        .Height = "100%"
        ↓↓↓  ここです!(UserControlのフォントに独自のフォントを指定しています。)
        .Fontfamily = UserControl.Font
    End With

かなり行き詰まっていたので解決してよかったです!
本当にありがとうございました。


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

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






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