UNICODEのファイルから読み込んで内容を
テキストボックスに表示したいのですがいまいちうまくいきません。
下の例の用にやると文字が化けてしまいうまく表示できません。
どなたかおわかりになられる方がいらっしゃったら教えてください。
よろしくお願いします。
<例>
Dim aaa as String *100
CommonDialog1.ShowOpen
Open (CommonDialog1.FileName) For Binary As #1
Get #1, 1, aaa
aaa = StrConv(aaa, vbFromUnicode)
Text1 = aaa
もし全ての文字が化けてしまうのでしたら、
ファイルの先頭部分にUNICODEでない
何かがくっついていません?
文字列の途中から表示が化ける場合は、
化けている文字の直前に余分なものが
あるのではないでしょうか。
ためしに、
Dim a As String
Dim b As String
a = あいうえお0123456789ABC
b = StrConv(a, vbUnicode)
Open test_1 For Binary As #1
Put #1, 1, b
Close #1
として、UNICODEのファイルを作成してやると、
ばいあんさんのプログラムで正しく表示できますよ。
そして、
Dim a As String
Dim b As String
a = あいうえお0123456789ABC
b = StrConv(a, vbUnicode) & , & StrConv(a, vbUnicode)
Open test_2 For Binary As #1
Put #1, 1, b
Close #1
これでファイルを作成すると、途中から文字が
化けますよね。
Unicodeでうまく表示できないということですが、
一口にUnicodeといってもいくつかのバージョンがあるようです。
といいますのも、私がSQLServerからUnicodeで抽出したスクリプトデータは
メモ帳では文字化けして正しく表示されないことがありました。
メモ帳自身もUnicode,Unicode Bigendian,UTF-8と3種類のUnicodeで
ファイルを保存できるようになっているので、このあたりが問題に
なっているということはないでしょうか?
yas0302さんのいわれているようにファイルにごみが入っているという
可能性がもっとも高いとは思いますが、もしそうでなければ
文字コード自体を疑ってみてもいいかもしれません。
あれっ。ちょっと待ってください。
>UNICODEのファイルから読み込んで内容を
>テキストボックスに表示したいのですがいまいちうまくいきません。
><例>
>Dim aaa as String *100
>
>CommonDialog1.ShowOpen
>Open (CommonDialog1.FileName) For Binary As #1
>Get #1, 1, aaa
>aaa = StrConv(aaa, vbFromUnicode)
>Text1 = aaa
元の文字コードがUnicodeならなぜStrConvをかけているのですか?
VBではUnicodeとSystemのデフォルトコードページとの変換は
自動で行われるためこれだと逆に文字化けするように思います。
StrConvの行をとって実行してみられてはどうですか。