20522
DartでWebページを作成しており、Webページ上の作業データをテキスト形式でダウンロードさせているのですが、  
データの容量が数メガバイトととても大きくなってしまい困っております。  
ダウンロードファイルをZIPで圧縮すると数十キロバイトまで下がるので圧縮したいです。  
Javascritp のライブラリを使う方法は見つかりましたが、  
Dart の機能で文字列を圧縮した文字列に変換する方法はないでしょうか？
CC BY-SA 3.0
2015-06-28T06:49:45.970
11818
2016-01-01T11:16:43.770
2016-01-01T11:16:43.770
10074
10074
question
javascript
Dart で文字列を圧縮した文字列に変換する方法はないですか？
[How to serve gzip-encoded html page - Stack
Overflow](https://stackoverflow.com/questions/18672578/dart-how-to-serve-gzip-
encoded-html-page) が参考になります。  
HTTP/1.1の応答としてその文字列をクライアントに渡す場合は、`HttpServer.autoCompress`を`true`にしておけば相手がGZIP対応であれば自動的にGZIP圧縮されます。  
単にある文字列をGZIP圧縮したバイト列に変換したいときは次のようになります：

```

    List<int> compressed = GZIP.encode(UTF8.encode(yourText));
    
```
CC BY-SA 3.0
2015-08-11T03:10:35.170
14257
2015-08-11T03:43:27.703
2017-05-23T12:38:55.250
-1
10872
11818
answer
2016/01/01  
回答で書くようにと指摘があったので書き直します。

2015/12/30  
＞Terryさん、holywiseさん  
すみません。今更ですが解決できました。

```

    List<int> compressed = GZIP.encode(UTF8.encode(yourText));
    
```

上記のコードはライブラリが見つからなかったので、そのまま実装はできませんでしたが、  
参考にして下記のように実装したら希望通りに動きました。

```

    GZipEncoder gzip = new GZipEncoder();
    Utf8Encoder utf8 = new Utf8Encoder();
    List<int> compressed = gzip.encode(utf8.convert(json));
    String zipStr = CryptoUtils.bytesToBase64(compressed);
    
```
CC BY-SA 3.0
2016-01-01T11:16:02.077
20522
2016-01-01T11:16:02.077
10074
11818
answer