O conteúdo da resposta Java retorna em vez de & lt; & gt;
-
22-09-2019 - |
Pergunta
Tenho um pequeno problema: estou escrevendo para responder conteúdo do arquivo e devolvê -lo ao cliente como uma resposta AJAX.
Mas ocorreu uma substituição de HTML: de >
para >
etc ...
O que tenho que fazer para fazer essa substituição?
res.setHeader( "Cache-Control", "must-revalidate, post-check=0, pre-check=0" );
res.setHeader( "Pragma", "public" );
res.setContentType( "text/html" );
Tia
atualizar
// import com.ibm.useful.http.PostData;
PostData pd = new PostData( req );
final FileData data;
try {
data = pd.getFileData( "sqlFile" );
ByteArrayOutputStream buf = new ByteArrayOutputStream();
for ( byte b : data.getByteData() ) {
buf.write( b );
}
res.getWriter().print( buf.toString() );
}
Eu assisti buf.toString()
através do depurador. Está tudo bem aí. A substituição vai além. mas onde...
Solução
Os caracteres especiais HTML foram escapados para Entidades HTML.
Se você é claro Que isso aconteceu logo depois que você o escreveu para a resposta e logo antes dos dados de resposta chegarem ao cliente, há possivelmente um filtro na cadeia que escapou das entidades HTML por algum motivo. Verifique os filtros declarados em web.xml
e ajustar o url-pattern
se necessário.
Outras dicas
Isso geralmente acontece quando os caracteres HTML (
<, > , "
entre outros) estão sendo escapados. Tente definir a fuga como falsa ou semelhante. Não consigo encontrar a documentação da API para "com.ibm.useful.http.postdata"
Tente usar o snippet abaixo:
res.setContentType("text/html; charset=UTF-8");
Verifique se o seu banco de dados também está definido como a codificação UTF-8, se estiver usando um.
Se isso não resolver, leia isso artigo.