Problemas com exibição de caracteres em JSF

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! :smiley:

experimente assim

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />	
</h:head>

Cara, eu tive o mesmo problema, resolvi colocando o Encoding no meu WebFilter


package filtros;

import java.io.IOException;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;

@WebFilter(servletNames={"Faces Servlet"})
public class JPAFilter implements Filter{
	
	private EntityManagerFactory factory;
	
	@Override
	public void destroy(){
		this.factory.close();
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException{
		
		EntityManager entityManager = this.factory.createEntityManager();
		
                request.setCharacterEncoding("UTF-8");//
		
                request.setAttribute("entityManager", entityManager);
		
                response.setCharacterEncoding("UTF-8");
		
		entityManager.getTransaction().begin();
		
		chain.doFilter(request, response);
		
		try{
			entityManager.getTransaction().commit();
			
		}catch(Exception e){
			
			entityManager.getTransaction().rollback();
			
		}finally {
			
			entityManager.close();
			
		}
		
	}
	
	@Override
	public void init(FilterConfig filterConfig) throws ServletException{
		this.factory = Persistence.createEntityManagerFactory("academia");
	}
}