URLEncoder com campo bytea do Postgres

Ola Galera,

Preciso transportar um tipo de dado “bytea” do “postgres” de uma pagina jsp p/ outra utilizando POST e neste transporte o dado no destino esta diferente da origem.

Aparentemente o problema está no método encode, então para não ficar complexo o exemplo criei uma pagina jsp simples que faz a leitura do dado no banco, faz o encode e em seguida faz um decode p/ gravar novamente banco, assim simulo a situação real.

No exemplo abaixo faço a leitura do seguinte dado:
\247\377\001\036\005\001j\000\001\215\000\022\001\217…
Ao gravar ele fica da seguinte forma:
\247\377\001\036\005\001j\000\001?\000\022\001?\000\0016

Esses dados vejo no proprio postgres (pgadmin), soh lembrando eh um campo do type bytea.

Ja tentei modificar o encode usando utf8, iso tanto no banco quanto no metodo URLEncoder e nada adiantou.

Estou postando o codigo abaixo, agradeço desde já pela ajuda:

<%@ page import=“java.io.ByteArrayInputStream” %>
<%@ page import=“java.net.URLEncoder” %>
<%@ page import=“java.net.URLDecoder” %>
<%@ page import=“java.sql.*” %>
<%@ page language=“java” contentType=“text/html; charset=utf8” %>

<%
/*
Valor Original: \247\377\001\036\005\001j\000\001\215\000\022\001\217…
Valor Gravado: \247\377\001\036\005\001j\000\001?\000\022\001?\000\0016…
*/

// carrega driver
Connection connection;
ResultSet resultSet;
PreparedStatement preparedStatement;
Class.forName("org.postgresql.Driver"); 
connection = DriverManager.getConnection("jdbc:postgresql://localhost/operadora2", "postgres", "123456");

byte buffer_bd[];
String filebytes = "";
String retorno = "";
String sql = "select clidig_digital from cli_digital where clidig_id = 3";
resultSet = connection.createStatement().executeQuery(sql);
if (resultSet.next()){		   	
	// extraindo do banco
	buffer_bd = resultSet.getBytes("clidig_digital");
	resultSet.close();
	filebytes=new String(buffer_bd);
	filebytes = URLEncoder.encode(filebytes, "UTF-8");

	// gravando de volta no banco (aqui seria a outra pagina jsp que recebera o dado via post)
	retorno = URLDecoder.decode(filebytes, "UTF-8");
	byte[] bretorno = retorno.getBytes();
	preparedStatement = connection.prepareStatement("INSERT INTO CLI_DIGITAL (cli_id, clidig_digital) values (?, ?)");
	preparedStatement.setInt(1, 1);
	preparedStatement.setBytes(2, bretorno);
	preparedStatement.executeUpdate();
}
connection.close();

%>