Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对可能是二进制数据但通常是文本数据的高效JSON编码_Java_C++_Python_Json_Encoding - Fatal编程技术网

Java 对可能是二进制数据但通常是文本数据的高效JSON编码

Java 对可能是二进制数据但通常是文本数据的高效JSON编码,java,c++,python,json,encoding,Java,C++,Python,Json,Encoding,我需要通过网络发送一个包含任意文件内容的JSON数据包。这可能是一个二进制文件(如ZIP文件),但通常是纯ASCII文本 我目前正在使用base64编码,它可以处理所有文件,但它会显著增加数据的大小——即使文件一开始是ASCII。除了手动检查任何非ASCII字符,然后决定是否对其进行base64编码之外,还有没有更有效的方法对数据进行编码 我现在在Python中编写,但是在爪哇、C和C++中可能需要这样做,所以一个易于移植的解决方案是更好的。 < P>使用引用的可打印编码。任何语言都应该支持这一

我需要通过网络发送一个包含任意文件内容的JSON数据包。这可能是一个二进制文件(如ZIP文件),但通常是纯ASCII文本

我目前正在使用base64编码,它可以处理所有文件,但它会显著增加数据的大小——即使文件一开始是ASCII。除了手动检查任何非ASCII字符,然后决定是否对其进行base64编码之外,还有没有更有效的方法对数据进行编码


我现在在Python中编写,但是在爪哇、C和C++中可能需要这样做,所以一个易于移植的解决方案是更好的。

< P>使用引用的可打印编码。任何语言都应该支持这一点。

好主意,谢谢。QP对于文本数据的开销肯定较小,但是对于二进制数据的开销要大得多,所以我不太确定+1,无论如何。Quoted-printable对于偶尔使用二进制文件的文本是可以的,但是对于二进制文件,它确实会增大大小。在这种情况下,Base-64应该更有效。我会尽量避免通过JSON传递文件,而是将URL传递给它,让另一端的软件在解码JSON结构后检索URL作为一个辅助进程。另一件事你可以做(如果Greg建议失败,例如由于网络拓扑原因),就是使用QP或Base64,在开头放一个字符,让对方知道是哪一个。这当然很容易,在编码器和解码器上。。。