中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > C#
自制Pop3邮件接收系统(一):利用MatchEvaluator实现HZ的解码
作者:qiushuiwuhen 时间:2002-01-28 12:14 出处:互联网 责编:chinaitpower
              摘要:自制Pop3邮件接收系统(一):利用MatchEvaluator实现HZ的解码

要作自制的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的替换操作

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有