VB6 標準モジュールの文字コードについて


ABC  2007-08-25 03:32:59  No: 137248

VB6でSMTPソフトを使用してユーザーにメールを自動で送信するアプリを
開発しております。

それで、メールで送信する処理を標準モジュールを使用して
実装しようとしているのですが、実装すると文字バケがおきてしまいます。

標準モジュールを使用せずに、フォーム側のコードで実装すると
文字バケはおきません。

文字バケがおきるのは本文のみです。
送るときには本文の内容をString型の変数に格納しています。

繰り返しますが、フォーム側のコードで実装すると文字バケはおきません。
標準モジュール側で実装すると文字バケがおきます。

これは、どういったことが原因なのでしょうか?
ご教授お願いします。


いな  2007-08-25 03:50:06  No: 137249

文字化け...の話なのに、
質問の内容からして、文字コード(EUC,JIS etc)について
何の記載もありません。
おそらく文字コードを意識していないに原因があるかと思います。


ABC  2007-08-25 04:14:31  No: 137250

受信したメールの本文には、文字バケされていて
その文字コードは把握できません。

ただし、その本文をSHIFT-JISにすると、
文字バケが解除されます。

つまり、標準モジュール側でSHIFT-JISから
なんらかの文字コードに変換されて文字バケが
おきているかと思うのですが。。。


OneVoice  2007-08-27 01:37:07  No: 137251

フォームモジュールだから、標準モジュールだから、
というモジュールの違いによるプログラムの動作の違いはありません。

>SMTPソフトを使用して
何のですか?

>標準モジュールを使用せずに、フォーム側のコードで実装すると
>文字バケはおきません。

そこに違いがあるからでしょう。
でも、ソースの該当箇所の提示等もありませんし、
起きている文字化けの状況説明も不足しているので、
これ以上のアドバイスは難しいでしょうね。


三年寝たろう  2007-09-11 02:57:05  No: 137252

JISへエンコードする関数です。
ファイル経由してますけど、動いてますよ。(^^;
Function EncodeJIS(sStr As String) As String
    '-------------------------------------
    'JISへエンコードしてファイルへ書き出し
    Dim objStream As ADODB.Stream
    Set objStream = CreateObject("ADODB.Stream")
    objStream.Open
    
    objStream.Type = adTypeText
    objStream.Charset = "ISO-2022-JP"
    objStream.WriteText sStr
    objStream.SaveToFile App.Path & "\JIS.TXT", adSaveCreateOverWrite

    objStream.Close
    Set objStream = Nothing
    '-------------------------------------
    'JISのファイルをバイナリーで読み込み
    Dim iFile   As Integer
    Dim sFile   As String
    Dim vFile   As Variant
    Dim sRet    As String
    sRet = ""
    iFile = FreeFile
    sFile = App.Path & "\JIS.TXT"
    Open sFile For Binary Access Read As #iFile
    On Error Resume Next
    Do Until EOF(iFile)
        Line Input #iFile, vFile
        If Err.Number = 62 Then Exit Do
        sRet = sRet & vFile & vbCrLf
    Loop
    Close #iFile
    EncodeJIS = sRet
End Function


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




  


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