自制Pop3郵件接收系統(一):利用MatchEvaluator實現HZ的解碼

王朝c#·作者佚名  2006-12-17
窄屏简体版  字體: |||超大  

要作自制的Pop3郵件接收系統,就要自己處理郵件的編碼

大家可能會收到以下的「亂碼」,

~{4s<R:C#,NRJG~}qiushuiwuhen~{#,;6S-@45=~}csdn.

實際上是簡體中文的HZ編碼,在郵件中經常會出現,

因為郵件協議體系通常是七位的,而漢字卻是雙字節的

所以就使用以下的方法對其進行解碼

String hzDecode(Match m){

String tmp=m.ToString();

byte[] ret=new byte[tmp.Length-4];

for(int i=0;i<ret.Length;i++)

ret[i]=(byte)(tmp[i+2]+128);

return Encoding.GetEncoding(936).GetString(ret);

}

使用範例:

string strHz="~{4s<R:C#,NRJG~}qiushuiwuhen~{#,;6S-@45=~}csdn.";

strHz=Regex.Replace(strHz,@"~\{(.+?)~\}",new MatchEvaluator(hzDecode));

Response.Write("\nHZ Decode="+strHz);

隨便帶上編碼的代碼(可用來發送郵件用)

String hzEncode(Match m){

byte[] tmp=Encoding.GetEncoding(936).GetBytes(m.ToString());

StringBuilder ret=new StringBuilder("~{");

for(int i=0;i<tmp.Length;i++)

ret.Append((char)(tmp[i]-128));

ret.Append("~}");

return ret.ToString();

}

使用範例:

string strHz="大家好,我是qiushuiwuhen,歡迎來到csdn.";

strHz=Regex.Replace(strHz,@"[^\x00-\xff]+",new MatchEvaluator(hzEncode));

Response.Write("<xmp>HZ Encode="+strHz);

原理:使用MatchEvaluator的回調(CallBack)函數執行Regex的替換操作

 
 
 
免責聲明:本文為網絡用戶發布,其觀點僅代表作者個人觀點,與本站無關,本站僅提供信息存儲服務。文中陳述內容未經本站證實,其真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,並請自行核實相關內容。
 
 
© 2005- 王朝網路 版權所有 導航