在Groovy中解码Base 64将返回乱码字符

在Groovy中解码Base 64将返回乱码字符,groovy,encoding,base64,Groovy,Encoding,Base64,我正在使用一个API,它返回一个Base64编码的文件,我想从中解析和获取数据。我在解码Base64时遇到问题,因为它返回时带有乱码。下面是我的代码 Base64 decoder = new Base64() def jsonSlurper = new JsonSlurper() def json = jsonSlurper.parseText(Requests.getInventory(app).toString()) String stockB64 = json.getAt("stock")

我正在使用一个API,它返回一个Base64编码的文件,我想从中解析和获取数据。我在解码Base64时遇到问题,因为它返回时带有乱码。下面是我的代码

Base64 decoder = new Base64()
def jsonSlurper = new JsonSlurper()
def json = jsonSlurper.parseText(Requests.getInventory(app).toString())
String stockB64 = json.getAt("stock")

byte[] decoded = decoder.decode(stockB64)
println(new String(decoded, "US-ASCII"))
我还尝试了
println(新字符串(解码为“UTF-8”)
,这将返回相同的乱码输出。我已经粘贴了一个输出截取的示例以供参考

�      ���v��� 
��W`�C�:�f��y�z��A��%J,S���}qF88D q )��'�C�c�X��������+n!��`nn���.��:�g����[��)��f^���c�VK��X�W_����������?4��L���D�������i�9|�X��������\���L�V���gY-K�^����
��b�����~s��;����g���\�ie�Ki}_������

我做错了什么?

无论从何处获取它,都不需要
Base64
类。您只需执行
stockB64.decodeBase64()
即可获得
解码的
字节数组。你确定你拥有的是编码的实际文本吗。通常base64编码意味着这是一个类似于图像的二进制文件。如果是文本,您可以简单地将其作为字符串放在json中。可能会将生成的字节数组保存到一个文件中,然后按内容调查文件类型。

我以前使用
stockB64.decodeBase64()
尝试过,得到了相同的输出。API文档说它是一个base64编码的Gzip CSV文件。我可能误解了输出的本质,认为我必须解码输出,然后解压缩文件并将其写入文件系统。我刚离开电脑,但我会尝试将输出保存为文件,看看会发生什么。很好,你有你的答案。“base64编码的gzip文件”意味着如果您对其进行base64解码,您将得到一个“gzip文件”。当然,您不能将其转换为字符串。用
gzip输入流压缩
字节[]
。谢谢。我猜当你盯着一个问题看这么久的时候就会发生这种情况!当我回到电脑上时,我会尝试一下,如果一切顺利的话,我会把这个标记为答案!