
中国文字のVisual Basic6での取り扱いについて教えてください。
環境 Windows7、Visual Basic6、IE8
秀丸エディタなどでUTF-8モードとして、「书信」などの漢字(左の字が中国簡体字、右の信は日本文字と同じ)をファイルに入れておき、これを読み取って、HTML文で表示できるようにするプログラムを作ろうとしています。
Visual Basic6の変数に入れるとUnicodeとして処理されるので実行中に止めて表示させても、またHTML文書で表示させても”???”と文字化け状態になります。
そこでOKwebにてコード変換を教えていただいたのでUnicodeをUTF-8に変換すると「?信」となります。
何か変ですがこれをさらにUTF-8からUniCodeに変換すると”???”と表示されるようになります。
中国簡体字の部分だけがどうしても表示できません。どうしたら表示できるのでしょうか?
なお本件とは直接の関係はありませんが、HTMLソースを秀丸で表示させて「书信」を張り付けると、ソースでも、またブラウザ・IE8で表示させても正しく「书信」と表示されます。
No.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
ありがとうございました。実は、ちょうどいま私も、魔界の何とかさんの方法によって、似た方法で成功したところでした。
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の文字(中国簡体字)が表示されていました。
No.1
- 回答日時:
ファイル読み込みの処理を見直す必要がありそうです。
http://d.hatena.ne.jp/replication/20091006/12547 …
サンプルはVBSでの方法ですが、VB6でもほぼそのままで行けるんじゃないかと。
この回答への補足
質問者です。スミマセンが・・・
教えていただいたURLで「ファイル読み込み用のクラスを作成する」で下記を書いてありますが、これはVisual Basic6のどこに張り付ければいいのでしょうか?
Option Explicit
Class UTF8FileReader
Private name, errNo, errDesc
(以下省略)
ありがとうございました。残念ながらクラスを理解していないロートルプログラマには利用できませんでした。
どこにどう置けばいいのかもわかりませんでした。
やっぱり無理かな~・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# のテキストボックスデザイン...
-
日時や時刻を指定し、その時間...
-
MSFlexGrid
-
ExcelVBAのコントロールの種類...
-
どう増強すべきか
-
複数のコマンドボタン(VBAで)...
-
VBA シートのボタン名を変更し...
-
パソコンへの「Dropbox...
-
AccessVBAで「dim dbs as datab...
-
Debug.exe実行時にWinMainCRTSt...
-
【マクロ】エラー【#DIV/0!】が...
-
フォーム1が開いているのならMs...
-
VB.NETでラベルの大きさってど...
-
クリックイベントなのに、2回ク...
-
[VB.net] ボタン(Flat)のEnable...
-
Do While中のVBAアプリケーショ...
-
共通モジュールでDBへの接続と...
-
worksheetFunctionクラスのVloo...
-
Amazon api について。JANコー...
-
アイコンとボタンの違い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックス(VBA)でEnter...
-
Wordテキストコントロールが未...
-
エクセルの画像にツールチップ...
-
MSFlexGrid
-
ADOのCursorLocationプロパティ
-
DataGridViewで行の展開みたい...
-
VB.NETで縦書表示をしたいので...
-
ユーザーフォームに日付を表示...
-
C# TEXTが空白であるLABELは何...
-
デザインモードを解除すると消...
-
VB6でLabelの最前面にText Box...
-
Enabled=Falseのテキストボック...
-
コンボボックスの高さを変更し...
-
C# アプリ終了時に設定を記憶...
-
VBのデータグリッドが表示され...
-
コンボボックスのセンタリング
-
エクセル VBA ユーザーフォーム...
-
checkbox付きListViewで デフ...
-
MFCでbitmapを背景にしてstatic...
-
リストコントロールのデータの...
おすすめ情報