テキストファイルを読み込もうとすると文字化けが起こる

解決


かず  2006-09-21 00:00:28  No: 96670

VBを独学し始めて3ヶ月のものです。

UnicodeとかJISコードが異なるからテキストファイルの中身を
読み込もうとしたら文字化けが起こるということは理解したのですが、
コードはどう記述すれば良いでしょうか?
いくらネットで調べても理解できませんでした。

VB6.0
SP6
OS  XP
です。どなたか力を貸していただけませんでしょうか?
よろしくお願い致します。

Private Sub Command5_Click()
    Dim strFileName As String
    Dim intFileNo   As Integer
    Dim strRecBuff  As String
    ' 空いているファイル番号を取得
    intFileNo = FreeFile
    
    strFileName = "C:\aaa.txt"
   
    Open strFileName For Input As intFileNo
    Do Until EOF(intFileNo)
        ' ファイルから1行読み込む
        Line Input #intFileNo, strRecBuff
       List1.AddItem strRecBuff
    Loop
End Sub


ヤマ@文系  2006-09-21 00:08:04  No: 96671

バイナリで読み込んでstrconvとか
FSOを使うとかどうでしょうか。


かず  2006-09-21 00:32:42  No: 96672

早々の返信ありがとうございます!
strconvはネットで調べつくしてわかったのですが
バイナリで読み込むというコードの記述がわかりませんでした。
三日間ネットで調べつくしたけどわかりませんでした。
本当に初心者なのでわかりやすい説明で教えて頂けませんでしょうか?
(プログラムもVBがはじめてです。)

よろしくお願い致します。


魔界の仮面弁士  2006-09-21 01:15:19  No: 96673

そもそも、元のファイルの文字コードがわからなければ、手の施しようがありません。
(たとえば単に Unicode といっても、その形式は一種類ではありません)

文字コードによっては、読み込み方が変わってくる場合もありますので、
まずは元のファイルが、どの文字コードで書かれたテキストなのかを
調べるところから始めてみてはいかがでしょう。

# 自動判定という手法もありますが、それとて限界がありますしね…。


かず  2006-09-21 02:19:23  No: 96674

魔界の仮面弁士さん、
ありがとうございました。
そうですね。自力で調べないと覚えれないし
魔界の仮面弁士さんのアドバイス内容で調べることにします。

ありがとうございました。


かず  2006-09-21 20:48:04  No: 96675

意味も理解でき、正常に表示されました。

でもバイナリとして読み込んだものの先頭の一文字が「?」
と表示されてしまいます。

strconvを使っても文字化けしてしまいます。
その?を取り除きたいのですがどうしたら可能でしょうか?
Len関数とか使ってみたのですが無理でした。


魔界の仮面弁士  2006-09-21 21:48:48  No: 96676

> でもバイナリとして読み込んだものの先頭の一文字が「?」
> と表示されてしまいます。
バイナリ、という事は Byte配列ですよね。
それをどのように表示させているのでしょうか?
また、そのバイナリの具体的な内容は、どのようなものでしょうか?

そして、先にお聞きした『文字コード』の件はどうなったのでしょうか?
元のテキストが UTF-8 なのか、UTF-16LE なのか、Shift_JIS なのか、
あるいは他のコードであるのかは、未だ曖昧にしか語られていないようです。

現時点では、具体的なデータもコードも示されていませんので、
  1. 元のテキストデータ自体、先頭に ? の文字が含まれていた。
  2. 元のテキストは Unicode で、先頭に BOM コードが含まれていた。
  3. 元のテキストには存在しないはずのデータだが、取得したデータの
     先頭には、不明なデータが混入してしまい、それが ? と表示された。
  4. 取得したバイナリ自体は正常だが、文字列変換時にデータが破損した。
  5. 文字列変換も正常だったが、VB6日本語版ではそのまま表示できない
     文字だったので、見た目上のデータが ? として表示された。
のいずれの状態なのかも、掲示板を見ている第三者には判断できません。

状況がわからない以上、そのための“具体的な”解決策の提示はできません。
そもそも、?を取り除けば解決する問題なのか、あるいは、そもそも ? が
含まれないようにすべきなのかも判断できないからです。


かず  2006-09-29 00:50:38  No: 96677

あああああああああああああああああああああ


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加