掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
読み込んだテキストファイルが文字化けする (ID:122500)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
IPersistFile.Save で *.html / *.txt に保存した場合は、 元のデータ形式をそのまま維持しますので、表示しているページの 文字コードが、そのままファイルの文字コードになります。 Yahoo! の場合は、通ってみたさんが書かれたように、EUC-JPの 文字コードで保存されます。たとえば、下記の Sample.txt は、 EUCになりますので、IE/TeraPad/秀丸等では表示できますが、 メモ帳などでは文字が化けて表示されてしまうでしょう。 Sub Main() Const FileName As String = "C:\Sample.txt" '現在起動中の InternetExplorer を列挙する Dim Shell As Object = CreateObject("Shell.Application") Dim Windows As Object = CallByName(Shell, "Windows", CallType.Method) For I As Integer = 0 To CInt(CallByName(Windows, "Count", CallType.Get)) - 1 Dim Exp As Object = CallByName(Windows, "Item", CallType.Get, I) If Not IsNothing(Exp) Then 'Yahoo!だったら If "http://www.yahoo.co.jp/".Equals(CallByName(Exp, "LocationURL", CallType.Get)) Then Dim Doc As Object = CallByName(Exp, "Document", CallType.Get) DirectCast(Doc, UCOMIPersistFile).Save(FileName, False) Marshal.ReleaseComObject(Doc) End If Marshal.ReleaseComObject(Exp) End If Next Marshal.ReleaseComObject(Windows) Marshal.ReleaseComObject(Shell) End Sub > テキストファイルに保存して、それを読み込んで変数に入れて テキストファイルに保存してから読み取るのではなく、 直接 Document の内容を読み取るように作り変えて見るとか。 > Dim sr As New System.IO.StreamReader(filepath + "0.txt", System.Text.Encoding.Default) Encoding.Default だと、Shift_JIS 扱いになってしまいますよ。 別の文字コードで開けば、文字化けが起きて当然かと。 元ファイルの文字コードにあわせたエンコードで読み込むか、 もしくは、保存時に文字コードを統一しておくかしましょう。 > 正常に読み込む方法がありましたらお教え頂けると助かります。 IPersistFile.Save で保存するのではなく、outerHTML / innerHTML経由で 保存した場合は、いったん、String型に変換されてから保存しますので、 文字コードの違いを、ある程度吸収する事ができます。 ただし、この場合、MSHTMLで「解析」された結果を元に、再度HTMLに復元して 出力する事になりますので、元のHTML(IEの[ソースの表示]で得られるHTML)とは、 異なる結果にはなってしまいますけれどね。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.