MIME和BASE64編碼/解碼程式碼

來源:互聯網
上載者:User

首先我要在這裡向各位糾正我犯在一個錯誤:Base64 只是MIME的一種編碼方案,我原來所說的 MIME 其實是MIME的另一種編碼方案 -- Quoted-Printable ,所以我對本文作了一些修正,並對由此而給大家帶來的誤導表示歉意。 May.6-01

最近在研究 POP3 時碰到一個問題,即其中的中文都是經過 MIME 編碼了的,如 MS Outlook Express 是用 Base64 ,而 FoxMail 則用的是QP ,本來想找幾個現成的編碼/解碼的代碼,結果只在 UDDF 中找到一個 Delphi的 Base64 Decode ,雖然 UDDF 說是Encode/Decode ,但我是沒找到 Encode的部分,而且寫得不好,只好自已寫一個了。

此代碼是一個 BCB的單元,非常簡單,提供了四個函數,要改成 Delphi 或其它 C/C++ 也很容易,有需要的自已改吧。此代碼經過測試,結果正確。

補充:因為不久前有一位用 VC的朋友在引用此代碼時出碰到一些困難,是由於BCB的 AnsiString的特殊性造成的,所以我將此代碼改寫為標準 C的,本來是應該這樣的,但我習慣了用 AnsiString 所以才寫成那樣的,不過現在只好改寫了。但為了方便 Delphi/BCB 使用,我還是特別加了一些東東,詳見程式的注釋,目的無非是為了更好用一些,其它語言的請自行參考吧。Mar.31-01

再補充:為了使這段程式更加實用,我將其整理為幾個單元,分別用於Delphi和C++Builder 。包括對資料流 TMemoryStream 和字串的處理。可以在本站作品中下載。Aug.14-01

修正:因為不久前一位網友給我發來MAIL說他在用些代碼解碼郵件附件時出錯,我檢查後發現我的解碼函數只能處理連續字串,而一般郵件附件都是帶斷行符號的字串,所以我作了一點點修正,見下面的注釋。Apr.03-02

下面是標頭檔:

//---------------------------------------------------------------------------
// MIME(QP & Base64) Encode/Decode unit. (H)
// Copyright (c) 2000, 02 Mental Studio - http://mental.mentsu.com
// Author : Raptor - raptorz@163.com
//---------------------------------------------------------------------------
#ifndef mimeb64H
#define mimeb64H
//---------------------------------------------------------------------------
#ifdef __cplusplus
extern "C" {
#endif
int QPEncode(   char * const aDest, const unsigned char * aSrc, int aLen );
int QPDecode(   unsigned char * const aDest, const char * aSrc );
int Base64Encode( char * const aDest, const unsigned char * aSrc, int aLen );
int Base64Decode( unsigned char * const aDest, const char * aSrc );
#ifdef __cplusplus
}
#endif
//---------------------------------------------------------------------------
#endif

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.