Blob para string com codificação ISO-8859-1 [RESOLVIDO]
6 respostas
A
aero_wil
Olá galera,
Estou tendo um problema de codificação com dados vindos do banco de dados com campo BLOB
Os caracteres com acentuação esta saindo errados, estou convertendo blob para string e inserindo em uma textarea
Acredito que esteja faltado definir uma codificação na saida dos bytes, alguem tem alguma dica?
Vlw!
<%@pagecontentType="text/html"pageEncoding="ISO-8859-1"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html; charset=iso-8859-1"/><title>:: TESTE::</title></head><body><%Blobblob=rs.getBlob("OBS");InputStreamin=blob.getBinaryStream();StringBuilderret=newStringBuilder();intlidos=0;byte[]b=newbyte[2048];Stringtemp=null;while((lidos=in.read(b))!=-1){temp=newString(b,0,lidos);ret.append(temp);%><tablewidth="615"border="1"><tr><tr><thwidth="152"height="47"scope="row">TEXTO</th><tdwidth="449"><formname="form1"method="post"action=""><label><textareaname="servico"id="servico"readonly="true"cols="60"rows="5"><%=ret.toString()%></textarea></label></form></td></tr></table>
no banco de dados os dados do campo Blob estão gravados correamente, todos os outros campos VarChar estão exibindo normal os caracteres na pagina menos o Blob.
// imcompleto privatestaticfinalStringCHAR_SET="UTF-8";privatestaticfinalStringDB_URL="jdbc:mysql://localhost/test";publicstaticvoidmain(String[]args){intid=?;try{DriverManager.registerDriver(newcom.mysql.jdbc.Driver());Connectionco=DriverManager.getConnection(DB_URL,"user","pass");{PreparedStatementst=co.prepareStatement("select texto from fotos where id = ?");st.setInt(1,id);ResultSetrs=st.executeQuery();while(rs.next()){ByteArrayOutputStreambytes=newByteArrayOutputStream();InputStreambs=rs.getBlob("texto").getBinaryStream();intch;while((ch=bs.read())!=-1){bytes.write(ch);}bs.close();Stringtexto=newString(bytes.toByteArray(),CHAR_SET);System.out.println(texto);}rs.close();}co.close();}catch(Exceptionex){ex.printStackTrace();}}
Mais como eu fasso para fazer isso em JSP ?
M
marcos1EM
aero_wil, não tenho certeza que irá funcionar mas tente algo do tipo:
temp = new String(b, 0, lidos,"ISO-8859-1");
Se não der, tente com UTF-8, por exemplo.
A
aero_wil
marcos1EM:
aero_wil, não tenho certeza que irá funcionar mas tente algo do tipo: