Olá, boa tarde,
Estou tendo um problema com a exibição de dados em uma tabela, gerada através de h:dataTable.
Todos os caracteres especiais aparecem completamente quebrados, impedindo o funcionamento de certas partes da tela. Os dados que possuem problemas são buscados em um banco MySQL. As partes da tela em que o encoding funciona, vem de um arquivo de propriedades com codificação UTF-8. Se eu mudar o padrão do navegador de UTF-8 para ISO-8859-1, a tabela fica perfeita, porém o resto da tela fica com problemas. Já tentei de todas as maneiras codificar os dados vindos do banco para UTF-8 em Java. Antes dos dados serem exibidos na tela utilizei:
Charset charset = Charset.forName("UTF-8");
ByteBuffer bb = charset.encode(retVal);
return retVal;
try {
byte[] bytes = provider.getBytes("UTF-8");
retVal = new String(bytes, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
Em debug, os valores aparecem corretos, mas no momento de exibir na tela não. Inspecionando no Firefox, percebi que os caracteres especiais estão sendo gerados na tela da seguinte maneira:
\uffffyph\uffffn\uffff\uffff' //Aqui deveria haver alguns caracteres especiais...
Todos os arquivos xhtml possuem <?xml version='1.0' encoding='UTF-8' ?>
E já testei utilizar também
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Qualquer luz será bem-vinda!
Valeu! 