UNICODE文字をTEXTBOXに表示するには?

[戻る]
ばいあん [E-Mail] 2002/07/26(金) 15:17:07
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

yas0302 2002/07/27(土) 00:41:31
もし全ての文字が化けてしまうのでしたら、
ファイルの先頭部分に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

これでファイルを作成すると、途中から文字が
化けますよね。

べーちゃん 2002/07/30(火) 01:09:56
Unicodeでうまく表示できないということですが、
一口にUnicodeといってもいくつかのバージョンがあるようです。

といいますのも、私がSQLServerからUnicodeで抽出したスクリプトデータは
メモ帳では文字化けして正しく表示されないことがありました。
メモ帳自身もUnicode,Unicode Bigendian,UTF-8と3種類のUnicodeで
ファイルを保存できるようになっているので、このあたりが問題に
なっているということはないでしょうか?

yas0302さんのいわれているようにファイルにごみが入っているという
可能性がもっとも高いとは思いますが、もしそうでなければ
文字コード自体を疑ってみてもいいかもしれません。

べーちゃん 2002/07/30(火) 01:19:14
あれっ。ちょっと待ってください。

>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の行をとって実行してみられてはどうですか。

古いスレッドには追加発言できません。