Java 对可能是二进制数据但通常是文本数据的高效JSON编码
我需要通过网络发送一个包含任意文件内容的JSON数据包。这可能是一个二进制文件(如ZIP文件),但通常是纯ASCII文本 我目前正在使用base64编码,它可以处理所有文件,但它会显著增加数据的大小——即使文件一开始是ASCII。除了手动检查任何非ASCII字符,然后决定是否对其进行base64编码之外,还有没有更有效的方法对数据进行编码Java 对可能是二进制数据但通常是文本数据的高效JSON编码,java,c++,python,json,encoding,Java,C++,Python,Json,Encoding,我需要通过网络发送一个包含任意文件内容的JSON数据包。这可能是一个二进制文件(如ZIP文件),但通常是纯ASCII文本 我目前正在使用base64编码,它可以处理所有文件,但它会显著增加数据的大小——即使文件一开始是ASCII。除了手动检查任何非ASCII字符,然后决定是否对其进行base64编码之外,还有没有更有效的方法对数据进行编码 我现在在Python中编写,但是在爪哇、C和C++中可能需要这样做,所以一个易于移植的解决方案是更好的。 < P>使用引用的可打印编码。任何语言都应该支持这一
我现在在Python中编写,但是在爪哇、C和C++中可能需要这样做,所以一个易于移植的解决方案是更好的。
< P>使用引用的可打印编码。任何语言都应该支持这一点。好主意,谢谢。QP对于文本数据的开销肯定较小,但是对于二进制数据的开销要大得多,所以我不太确定+1,无论如何。Quoted-printable对于偶尔使用二进制文件的文本是可以的,但是对于二进制文件,它确实会增大大小。在这种情况下,Base-64应该更有效。我会尽量避免通过JSON传递文件,而是将URL传递给它,让另一端的软件在解码JSON结构后检索URL作为一个辅助进程。另一件事你可以做(如果Greg建议失败,例如由于网络拓扑原因),就是使用QP或Base64,在开头放一个字符,让对方知道是哪一个。这当然很容易,在编码器和解码器上。。。