アプリ版:「スタンプのみでお礼する」機能のリリースについて

中国文字のVisual Basic6での取り扱いについて教えてください。
環境 Windows7、Visual Basic6、IE8
秀丸エディタなどでUTF-8モードとして、「书信」などの漢字(左の字が中国簡体字、右の信は日本文字と同じ)をファイルに入れておき、これを読み取って、HTML文で表示できるようにするプログラムを作ろうとしています。
Visual Basic6の変数に入れるとUnicodeとして処理されるので実行中に止めて表示させても、またHTML文書で表示させても”???”と文字化け状態になります。
そこでOKwebにてコード変換を教えていただいたのでUnicodeをUTF-8に変換すると「?信」となります。
何か変ですがこれをさらにUTF-8からUniCodeに変換すると”???”と表示されるようになります。
中国簡体字の部分だけがどうしても表示できません。どうしたら表示できるのでしょうか?

なお本件とは直接の関係はありませんが、HTMLソースを秀丸で表示させて「书信」を張り付けると、ソースでも、またブラウザ・IE8で表示させても正しく「书信」と表示されます。

A 回答 (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
    • good
    • 0
この回答へのお礼

ありがとうございました。実は、ちょうどいま私も、魔界の何とかさんの方法によって、似た方法で成功したところでした。
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の文字(中国簡体字)が表示されていました。

お礼日時:2011/06/25 13:38

ファイル読み込みの処理を見直す必要がありそうです。



http://d.hatena.ne.jp/replication/20091006/12547 …

サンプルはVBSでの方法ですが、VB6でもほぼそのままで行けるんじゃないかと。

この回答への補足

質問者です。スミマセンが・・・
教えていただいたURLで「ファイル読み込み用のクラスを作成する」で下記を書いてありますが、これはVisual Basic6のどこに張り付ければいいのでしょうか?

Option Explicit
Class UTF8FileReader
Private name, errNo, errDesc
(以下省略)

補足日時:2011/06/24 15:39
    • good
    • 0
この回答へのお礼

ありがとうございました。残念ながらクラスを理解していないロートルプログラマには利用できませんでした。
どこにどう置けばいいのかもわかりませんでした。
やっぱり無理かな~・・・

お礼日時:2011/06/24 15:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!