2010-04-14 111 views
1

我需要通過任意文件的內容通過線路發送JSON數據包。這可能是一個二進制文件(如ZIP文件),但通常它會是純文本的ASCII文本。高效的JSON編碼可能是二進制數據,但通常是文本

我目前使用base64編碼,它處理所有文件,但它顯着增加了數據的大小 - 即使該文件是ASCII開始。除了手動檢查任何非ASCII字符,然後決定是否對其進行64位編碼之外,是否還有一種更有效的方式可以對數據進行編碼?

我目前正在使用Python編寫此代碼,但可能需要在Java,C#和C++中執行相同的操作,因此可以使用輕鬆便攜的解決方案。

回答

2

使用引用打印的編碼。任何語言都應該支持。 http://en.wikipedia.org/wiki/Quoted-printable

+0

有趣的想法,謝謝。 QP對文本數據的開銷肯定較少,但二進制數據的開銷更大,所以我不太確定。 +1,無論如何。 – EMP 2010-04-14 00:45:29

+2

Quoted-printable對於偶爾使用二進制文本的文本是可以的,但對於二進制文件來說,它會真正膨脹大小。在這種情況下,Base-64應該更有效率。我會盡量避免通過JSON傳遞文件,而是將一個URL傳遞給它,讓另一端的軟件在解碼JSON結構之後將URL作爲邊處理進行檢索。 – 2010-04-14 00:57:26

+0

你可以做的另一件事(如果Greg建議失敗,例如出於網絡拓撲的原因)就是使用QP或Base64,並在開始時放置一個字符讓對方知道它是哪一個。在編碼器和解碼器上這當然很容易... – moshez 2010-04-14 01:18:31