I solved the issue. It was a memory issue not a decoding issue. Because the dynamic memory was mostly used up, it affected the encoding of the data. Reducing the amount of memory my code was using resolved the issue.
I also discovered, that Serial.println("some text") uses a lot of dynamic memory. So by reducing the amount of text I was encoding helped, but also by wrapping the the text in F(), so like this:
Serial.println(F("some text"))
Which stores the string in flash memory not sram. Heres a helpful link on the F function: