- ベストアンサー
中国文字のプログラムでの取り扱い
- Visual Basic6での中国文字の取り扱いについて教えてください。
- UTF-8で表示するためのプログラムを作成しましたが、文字化けが発生します。
- 中国簡体字の部分だけが表示できません。どうしたら表示できるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
VB6の標準コントロールに日本語や中国語の混在文を 表示することはできないので、UNICODEに対応した コントロールに表示するようにします。 二つのコントロールに同時に表示してみます。 準備: プロジェクトからコンポーネントを選択し、 Microsoft Internet Controls msrtedit 1.0 Type Library の二つにチェックを入れて適用、OKとします。 フォームにコマンドボタンを一つ、 WebBrowserコントロールとAMSREditを フォームに設定します。 以下のコードを設定してください。 なお、test.txtはプロジェクトと同じディレクトリ においているとしています。他のディレクトリに おいている場合はフルパスを設定してください。 Private Sub Command1_Click() 'RichEditに表示 With New ADODB.Stream .Type = 2 .Charset = "UNICODE" .Open .LoadFromFile (App.Path & "\test.txt") AMSREdit1.text = .ReadText(-1) End With 'WebBrowserに表示 WebBrowser1.Navigate App.Path & "\test.txt" End Sub
その他の回答 (1)
- khazad-lefty
- ベストアンサー率44% (296/668)
ファイル読み込みの処理を見直す必要がありそうです。 http://d.hatena.ne.jp/replication/20091006/1254755257 サンプルはVBSでの方法ですが、VB6でもほぼそのままで行けるんじゃないかと。
お礼
ありがとうございました。残念ながらクラスを理解していないロートルプログラマには利用できませんでした。 どこにどう置けばいいのかもわかりませんでした。 やっぱり無理かな~・・・
補足
質問者です。スミマセンが・・・ 教えていただいたURLで「ファイル読み込み用のクラスを作成する」で下記を書いてありますが、これはVisual Basic6のどこに張り付ければいいのでしょうか? Option Explicit Class UTF8FileReader Private name, errNo, errDesc (以下省略)
お礼
ありがとうございました。実は、ちょうどいま私も、魔界の何とかさんの方法によって、似た方法で成功したところでした。 2週間ばかり、コード変換などいじくりまわしていたのですが、ADODB.Streamで読み込むだけでうまくいく、ただし、VB6内で表示させてもUTF-8での表示はされないので?になったままである、ということが分りました。 お目を煩わせた皆様にも感謝申し上げます。私のやった方法を書いておきま す。 Microsoft ActiveX Data Objects 2.5以上をチェックしておく。 Dim Src As Object Dim Dst As Object Dim buf As String Dim iFile Dim Hbun 'HTMLの文章 iFile = App.Path & "\xyz.txt" 'UTF-8の入っているファイル '●Streamオブジェクトを生成し、UTF-8ファイルを読み込ませる Set Src = CreateObject("ADODB.Stream") Src.Open Src.LoadFromFile iFile ' "C:\UTF-8の元ファイル.TXT" Src.Charset = "UTF-8" '●UTF-8データを、VB標準の文字列型として読み込む buf = Src.ReadText() '変数bufに全データが入っている Src.Close Set Src = Nothing '●文書処理 (bufを処理する/省略) '●処理結果をUTF-8ファイルとして吐き出す Set Dst = CreateObject("ADODB.Stream") Dst.Open Dst.Charset = "UTF-8" '異なる文字コードのStreamに吐き出してもOK Dst.WriteText Hbun Dst.SaveToFile App.Path & "\HTML結果.htm", adSaveCreateOverWrite Dst.Close Set Dst = Nothing HTML結果.htmのファイルをクリックして、ブラウザ・IEで表示させるとUTF-8の文字(中国簡体字)が表示されていました。