1
votes

I am trying to decode a gzipped body of a REST response (YouTrack-API) with PHP. Nothing seems to work:

  • Automatic decoding from CURL does nothing
  • Using Guzzle with headers set to accept encoding does nothing
  • Simply putting the acquired string into gzdecode() does nothing

I have tried gzinflate, gzdecode and some wild combinations of them including stripping off bytes at the start and end, but without success. I am by no means an expert in compression, so I have no idea if there are even different formats a gzipped string can take, but any old 'online gzip service' can decode the string with no problem at all

Simple example: This string:

H4sIAAAAAAAA//NIzcnJV8jPSVEozy/KSQEARAYhbw8AAAA=

should output:

Hello old world

Put into any online converter I could find, it works, put into any of the PHP functions: data error. What is the deal with PHP and gzip not working at all? has it something to do with either the entire response being gzipped or just the contents?

1

1 Answers

5
votes

The gzipped string is base64 encoded, so you need to do:

echo gzdecode(base64_decode('H4sIAAAAAAAA//NIzcnJV8jPSVEozy/KSQEARAYhbw8AAAA='));