1.不同平台下的换行符差别:

  (1)Windows平台:在Dos和Windows下采用回车+换行CRLF表示下一行。
  (2)Linux/Unix平台:用换行符LF表示下一行。
  (3)Mac平台:用回车符CR表示下一行。
  
   回车符CR用'\r'表示, 十进制ASCII代码是13, 十六进制代码为0x0D;

     换行符LF用'\n'表示, ASCII代码是10, 十六制为0x0A.

     所以Windows平台上换行在文本文件中是使用 0d 0a 两个字节表示, 而UNIX和苹果平台上换行则是使用0a或0d一个字节表示.

2.Quoted printable编码:
  
  QP和Base64一样,都是MIME邮件中常用的传输编码方式,可将普通字符串编码成可打印的ASCII字符。

  QP的编码比较简单,对任何一个8位Byte,使用=后加该字节的16进制值来表示。比如“恭喜”的GBK编码是“\xb9\xa7”,那么对应的QP编码即为“=B9=A7”。

  QP编码有这样一个限制:编码后每行不能超过76个字符。当超过这个限制时,将适用软换行,用=表示编码行的断行,后接CRLF

   这样就有一个问题了,当通过SMTP发送邮件到Linux服务器上后,如果在Linux上又对邮件内容做了一定的处理后,有可能会把换行符给替换成Linux上的换行符LF,这样的邮件再下载到Windows上,通过OutLook打开后,会发现中文的编码有乱码,而且只乱了一部分,其原因就是CRLF惹的祸。

  所以,如果在Linux上对QP编码的邮件处理过后,最好还是应该保留每行的CRLF格式,这样下载到Windows上就不会乱码了。

  或者,在下载到Windows之前,做一下替换,把LF换成CRLF。
  
  或者,使用unix2dos转换一下即可。