加入收藏 | 设为首页 | 会员中心 | 我要投稿 南京站长网 (https://www.025zz.com.cn/)- 自然语言处理、建站、经验、云计算、图像分析!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

C# Quoted-Printable编码 解码介绍

发布时间:2023-06-15 10:30:30 所属栏目:语言 来源:互联网
导读:   代码如下:



  # using System;



  # using System.Collections;



  # using System.Text;



  #



  # /// <summary>



  # /// Class for en
  代码如下:
 
  # using System;
 
  # using System.Collections;
 
  # using System.Text;
 
  #
 
  # /// <summary>
 
  # /// Class for encoding and decoding a string to QuotedPrintable
 
  # /// RFC 1521 http://www.ietf.org/rfc/rfc1521.txt
 
  # /// RFC 2045 http://www.ietf.org/rfc/rfc2045.txt
 
  # /// Date: 2006-03-23
 
  # /// Author: Kevin Spaun
 
  # /// Company: SPAUN Informationstechnik GmbH - http://www.spaun-it.com/
 
  # /// Feedback: kspaun@spaun-it.de
 
  # /// License: This piece of code comes with no guaranties. You can use it for whatever you want for free.
 
  # ///
 
  # /// Modified by Will Huang ( http://blog.miniasp.com/post/2008/02/14/Quoted-Printable-Encoding-and-Decoding.aspx )
 
  # /// Modified at 2008-02-13
 
  # ///
 
  # /// Modified by reterry (//www.Cuoxin.com)
 
  # /// Modified at 2008-11-29
 
  # /// Modified for MySelf
 
  # ///
 
  # /// </summary>
 
  # public class QuotedPrintable
 
  # {
 
  # private const byte EQUALS = 61;
 
  # private const byte CR = 13;
 
  # private const byte LF = 10;
 
  # private const byte SPACE = 32;
 
  # private const byte TAB = 9;
 
  #
 
  # /// <summary>
 
  # /// Encodes a string to QuotedPrintable
 
  # /// </summary>
 
  # /// <param name="_ToEncode">String to encode</param>
 
  # /// <returns>QuotedPrintable encoded string</returns>
 
  # public static string Encode(string _ToEncode)
 
  # {
 
  # StringBuilder Encoded = new StringBuilder();
 
  # string hex = string.Empty;
 
  # //byte[] bytes = Encoding.Default.GetBytes(_ToEncode);
 
  # byte[] bytes = Encoding.UTF8.GetBytes(_ToEncode);
 
  # //int count = 0;
 
  #
 
  # for (int i = 0; i < bytes.Length; i++)
 
  # {
 
  # //these characters must be encoded
 
  # if ((bytes[i] < 33 || bytes[i] > 126 || bytes[i] == EQUALS) && bytes[i] != CR && bytes[i] != LF && bytes[i] != SPACE)
 
  # {
 
  # if (bytes[i].ToString("X").Length < 2)
 
  # {
 
  # hex = "0" + bytes[i].ToString("X");
 
  # Encoded.Append("=" + hex);
 
  # }
 
  # else
 
  # {
 
  # hex = bytes[i].ToString("X");
 
  # Encoded.Append("=" + hex);
 
  # }
 
  # }
 
  # else
 
  # {
 
  # //check if index out of range
 
  # if ((i + 1) < bytes.Length)
 
  # {
 
  # //if TAB is at the end of the line - encode it!
 
  # if ((bytes[i] == TAB && bytes[i + 1] == LF) || (bytes[i] == TAB && bytes[i + 1] == CR))
 
  # {
 
  # Encoded.Append("=0" + bytes[i].ToString("X"));
 
  # }
 
  # //if SPACE is at the end of the line - encode it!
 
  # else if ((bytes[i] == SPACE && bytes[i + 1] == LF) || (bytes[i] == SPACE && bytes[i + 1] == CR))
 
  # {
 
  # Encoded.Append("=" + bytes[i].ToString("X"));
 
  # }
 
  # else
 
  # {
 
  # Encoded.Append(System.Convert.ToChar(bytes[i]));
 
  # }
 
  # }
 
  # else
 
  # {
 
  # Encoded.Append(System.Convert.ToChar(bytes[i]));
 
  # }
 
  # }
 
  # //if (count == 75)
 
  # //{
 
  # // Encoded.Append("=/r/n"); //insert soft-linebreak
 
  # // count = 0;
 
  # //}
 
  # //count++;
 
  # }
 
  #
 
  # return Encoded.ToString();
 
  # }
 
  #
 
  # /// <summary>
 

(编辑:南京站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章