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

amyz發表於2007-10-17
自制Pop3郵件接收系統(一):利用MatchEvaluator實現HZ的解碼 (轉)[@more@]

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

大家可能會收到以下的“亂碼”,
~{4s,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[i]=(byte)(tmp[i+2]+128);
 return Encoding.GetEncoding(936).GetString(ret);
}


使用範例:
 string strHz="~{4s 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 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("

HZ Encode=&quot;+strHz); <p>原理:使用MatchEvaluator的回撥(CallBack)Regex的替換操作<br></p><br>

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-977238/,如需轉載,請註明出處,否則將追究法律責任。

相關文章