The project of U-WA-
http://uwa.potetihouse.com/
戻る
TKMP.DLL   プログラミングTips

文字化けメールを解析する

 文字化けがおこる原因はいろいろあると思うのですが、 メールで起こる事が多いのは、ヘッダーに記載されている文字コードと 実際にテキストが変換された文字コードを一致していない場合です。
 TKMP.Reader.MailReaderクラスは通常ヘッダー情報に元に文字コードの変換を行うので、 文字化けが発生した場合は、明示的に文字コードを変更する必要があり、 その場合に使用するのがEncodeCharsetプロパティになります。
 次のサンプルでは、filenameから取得したメール情報をJIS、Shift-JIS、EUC、UTF-8でデコードしています。
 文字コード自体を自動判別する方法は、TKMP.DLLと離れるのでコード自体は記述しません。 私は、「G-PROJECT」さんで公開している情報を元に、 自分専用ライブラリを作成して、それを使っています。 その他でも文字コードの自動判別は多数見かけますが、そのときに必要となるバイト配列は TKMP.Reader.MailReaderクラスのMainDataプロパティより取得可能なので、 一度挑戦してみてください。
C#.NET
//仮のメールデータが格納されたファイル
string filename = @"c:\mail.txt";

TKMP.Reader.MailReader reader = new TKMP.Reader.MailReader(filename , false);

//本文をJISで読み出します
reader.EncodeCharset = "iso-2022-jp";
string text_jis = reader.MainText;

//本文をShift−JISで読み出します
reader.EncodeCharset = "sjis";  
string text_sjis = reader.MainText;

//本文をEUCで読み出します
reader.EncodeCharset = "euc-jp";
string text_euc = reader.MainText;

//本文をUTF−8で読み出します
reader.EncodeCharset = "utf-8"; 
string text_utf8 = reader.MainText;
VB.NET
'仮のメールデータが格納されたファイル
Dim filename As String = "c:\mail.txt"

Dim reader As New TKMP.Reader.MailReader(filename, False)

'本文をJISで読み出します
reader.EncodeCharset = "iso-2022-jp"
Dim text_jis As String = reader.MainText

'本文をShift−JISで読み出します
reader.EncodeCharset = "sjis"
Dim text_sjis As String = reader.MainText

'本文をEUCで読み出します
reader.EncodeCharset = "euc-jp"
Dim text_euc As String = reader.MainText

'本文をUTF−8で読み出します
reader.EncodeCharset = "utf-8"
Dim text_utf8 As String = reader.MainText
VB.NETのコードはC#.NETを元に「C#.NET to VB.NET Translator」によって作成したものです

トップページへ移動
The project of U-WA-
http://uwa.potetihouse.com/