Ниже приведен мой код для сжатия строки
val bos = ByteArrayOutputStream()
GZIPOutputStream(bos).bufferedWriter(Charsets.UTF_8).use { it.write(data) }
String(bos.toByteArray(),Charsets.UTF_8)
Для входной строки <?xml version = "1.0" encoding = "UTF-8" standalone = "no"?><VAST version = "2.0">
на выходе я получаю следующее: �??????????????????������Q(K-*��ϳU2�3PRH�K�O��K�U
Я ожидаю вывода, как показано ниже: H4sIAAAAAAAAA7Oxr8jNUShLLSrOzM+zVTLUM1BSSM1Lzk/JzEu3VQoNcdO1UFIoLknMS0nMyc9LtVXKy1eyt7MJcwwOQegyAuqyAwB+wzaKSgAAAA== на основе этого сайта https://www.zickty.com/text тогзип
Как я могу сжать строку в известном формате символов, используя gzip, как указано выше?
H4sIAAAAAAAAA7Oxr8jNUShLLSrOzM+zVTLUM1BSSM1Lzk/JzEu3VQoNcdO1UFIoLknMS0nMyc9LtVXKy1eyt7MJcwwOQegyAuqyAwB+wzaKSgAAAA==
Это кодируется в кодировке Base64 после того, как сжатие уже произошло. (Обратите также внимание, что кодирование Base64 потребует больше памяти, чем необработанные байты, и, возможно, потребует больше памяти, чем сэкономленное gzip.)
Вывод вашего кода находится в необработанных байтах... в основном. Обработка его как строки UTF_8, скорее всего, повредила его. Вам следует либо вообще не преобразовывать его обратно в строку, либо использовать Base64 для преобразования его в строку с помощью java.util.Base64.
Однако обратите внимание, что разные настройки сжатия, даже для одного и того же алгоритма zip, могут привести к разным сжатым выводам. Единственный надежный способ проверки результатов сжатия — последующая распаковка результатов.