.msg檔案讀取/ 中文編碼轉換
參考自:
https://www.codeproject.com/KB/office/reading_an_outlook_msg.aspx
//------------------------------------
jkFixLib:
使用不同編碼的來源檔作讀取 有中文轉換的問題
基本上分為 8位元讀取(utf8/big5) 跟 16位元讀取(unicode) 的問題
OutlookStorage.Message的 8位元讀取(utf8)會造成讀取中文編碼錯誤 需修改成(default) >> 應該是big5
//-------------------------------
//jk 轉碼測試心得 :
// 讀入stream的時候 要根據來源檔的編碼作讀取設定 才能轉出正確的中文字串 之後可以任意作編碼轉換的動作
// BUT 如果一開始的讀取編碼就錯誤了(中文變亂碼) 那後續的轉碼過程 中文都無法正常
//==========================
]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using iwantedue; //加入 OutlookStorage.Messag LIB class
private void button1_Click(object sender, EventArgs e)
{
// OutlookStorage.Message outlookMsg = new OutlookStorage.Message(@"C:\uni_test.msg");//來源檔是unicode(utf-16)編碼
OutlookStorage.Message outlookMsg = new OutlookStorage.Message(@"C:\07_test.msg");//來源檔是big5編碼
//jk測試心得 :
// 讀入stream的時候 要根據來源檔的編碼作讀取設定 才能轉出正確的中文字串 之後可以任意作編碼轉換的動作
// BUT 如果一開始的讀取編碼就錯誤了(中文變亂碼) 那後續的轉碼過程 中文都無法正常
//-------編碼轉換--------------
byte[] bb = Encoding .UTF8 .GetBytes ( outlookMsg.BodyText );
// MessageBox.Show(Encoding.Default .GetString(bb));//驗證轉碼後的字串,仍正確的顯示
byte[] cc = Encoding.Convert(Encoding.UTF8 , Encoding.Unicode , bb);//進行轉碼,參數1,來源編碼,參數二,目標編碼,參數三,欲編碼變數
string title = Encoding.Unicode .GetString(cc); // 轉換成UTF-8編碼
//-------/編碼轉換/-----------------
textBox_title.Text = outlookMsg.Subject; //可以正常顯示中文(UTF-8編碼)
textBox_content.Text = outlookMsg.BodyText;//可以正常顯示中文(UTF-8編碼)
}
參考自:
https://www.codeproject.com/KB/office/reading_an_outlook_msg.aspx
//------------------------------------
jkFixLib:
使用不同編碼的來源檔作讀取 有中文轉換的問題
基本上分為 8位元讀取(utf8/big5) 跟 16位元讀取(unicode) 的問題
OutlookStorage.Message的 8位元讀取(utf8)會造成讀取中文編碼錯誤 需修改成(default) >> 應該是big5
//-------------------------------
//jk 轉碼測試心得 :
// 讀入stream的時候 要根據來源檔的編碼作讀取設定 才能轉出正確的中文字串 之後可以任意作編碼轉換的動作
// BUT 如果一開始的讀取編碼就錯誤了(中文變亂碼) 那後續的轉碼過程 中文都無法正常
//==========================
]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using iwantedue; //加入 OutlookStorage.Messag LIB class
private void button1_Click(object sender, EventArgs e)
{
// OutlookStorage.Message outlookMsg = new OutlookStorage.Message(@"C:\uni_test.msg");//來源檔是unicode(utf-16)編碼
OutlookStorage.Message outlookMsg = new OutlookStorage.Message(@"C:\07_test.msg");//來源檔是big5編碼
//jk測試心得 :
// 讀入stream的時候 要根據來源檔的編碼作讀取設定 才能轉出正確的中文字串 之後可以任意作編碼轉換的動作
// BUT 如果一開始的讀取編碼就錯誤了(中文變亂碼) 那後續的轉碼過程 中文都無法正常
//-------編碼轉換--------------
byte[] bb = Encoding .UTF8 .GetBytes ( outlookMsg.BodyText );
// MessageBox.Show(Encoding.Default .GetString(bb));//驗證轉碼後的字串,仍正確的顯示
byte[] cc = Encoding.Convert(Encoding.UTF8 , Encoding.Unicode , bb);//進行轉碼,參數1,來源編碼,參數二,目標編碼,參數三,欲編碼變數
string title = Encoding.Unicode .GetString(cc); // 轉換成UTF-8編碼
//-------/編碼轉換/-----------------
textBox_title.Text = outlookMsg.Subject; //可以正常顯示中文(UTF-8編碼)
textBox_content.Text = outlookMsg.BodyText;//可以正常顯示中文(UTF-8編碼)
}
請先 登入 以發表留言。