2017-06-15 16 views
0

Javaのテキストを収縮し、WebSocketsを使用してNodeJSに送信し、NodeJSで膨張させる必要があります。Javaで縮小する、JavaScriptで膨張する、Z_DATA_ERROR

私はJavascript

に解凍するためにJava

public static String compress(String s) throws UnsupportedEncodingException 
{ 
    Deflater def = new Deflater(9); 
    byte[] sbytes = s.getBytes(StandardCharsets.UTF_8); 
    def.setInput(sbytes); 
    def.finish(); 
    byte[] buffer = new byte[sbytes.length]; 
    int n = def.deflate(buffer); 
    return new String(buffer, StandardCharsets.UTF_8); 
      //+ "*" + sbytes.length; 
    //return Base64.encode(buffer); 
} 

そして、このコードで圧縮されたUTF-8文字列を作るためにJavaでこのコードを使用

zlib.inflate(new Buffer(message, "utf8"), function(err, data){ 
    if(!err){ 
     console.log(data.toString('utf8')); 
    }else{ 
     console.log(err); 
    } 
}); 

メッセージは、WebSocketを

から文字列です。 NodeJSでこのエラーが発生する

{ Error: invalid code lengths set 
    at Inflate.zlibOnError (zlib.js:152:15) errno: -3, code: 'Z_DATA_ERROR' } 

問題を見つけるために、私はbase64を使用しようとしましたが正常に動作します。

zlib.inflate(new Buffer(message, "base64"), function(err, data){ 
    if(!err){ 
     console.log(data.toString('utf8')); 
    }else{ 
     console.log(err); 
    } 
}); 

また、私はJavaとJavascriptで\ deflate文字列を膨らませようとしました。 Javaからのutf-8文字列からのバッファをjavascriptで作成しようとしているときに、何か変わったことが起こります。 UTF-8文字列は同じですが、バッファは少し異なります。緩衝液の溜まりは途中で同じです。

更新: 回答:使用Base64ではなく、UTF-8

答えて

関連する問題