2017-08-11 80 views
0

我正在嘗試編寫一個小型Base64編碼器/解碼器程序,並試圖找出是否有任何規則或任何指南或預期行爲,碰到一個無效的字符。如何在解碼Base64字符串時處理錯誤

我可能會快速失敗(抱怨和退出),忽略無效字符(就像我爲換行符所做的那樣),或者做一個垃圾進入垃圾方法(數據將被部分解碼,其餘依賴於嚴重程度或錯誤的確切數量)。

在類似的觀點上:我想我應該忽略換行符(比如在PEM文件中,行被打斷爲64個字符長度),但是有沒有其他控制字符可以預期,應該忽略不計?

如果它有任何興趣,我在純(香草)C編碼,它還沒有它的庫。但是這個細節對於我正在尋找的答案應該沒有什麼關係。

謝謝。

+0

這個問題過於寬泛。至少有十幾種使用base64編碼的變體。選擇要使用的變體,並使用該變體的規則和限制。 –

+0

我主要將我的實現基於RFC的HTTP(1945,2068)中的描述,該描述基於MIME RFC(早在1341年)。然而,這些消息來源似乎都沒有描述出現錯誤時該怎麼辦。 – Menachem

+1

好吧,我期望RFC1945和RFC2068在內容編碼方面非常模糊,因爲它們定義了HTTP協議。你可以看看RFC2045的MIME base64。但是,錯誤處理將完全取決於特定應用程序的需求。 –

回答

0

我的歉意。該RFC是對MIME(134115212045)包含下面的段落,這是我找不到直到現在:

的輸出流(編碼的字節),必須在每次不超過76個字符的行來表示。 解碼軟件必須忽略表1中未找到的所有換行符或其他字符。在base64數據中,表1中的字符,換行符和其他空白字符可能表示傳輸錯誤,在某些情況下,警告消息甚至消息拒絕可能是合適的。

在任何情況下,這個問題和答案都適用於onOpenOverflow。

P.S.如果還有其他的Base64標準和其他指導方針,在其他答案中適用鏈接和引用。