Mais um problema com acentuação

Bom dia pessoal … Olha eu aqui outra vez …
O caso é o seguinte, estou desenvolvendo uma aplicação web, e estou tendo alguns problemas com relação a acentuação.
Vamos por partes …
Todos os dados que são mostrados na página de resultado, são recuperados do banco de dados; porém uma parte desses dados, foi compactada com a Zlib e esta armazenada em campos binary, eu recupero eles numa boa e tals, mas como muitas vezes são textos longos, eu tenho que “justificar” a string antes de enviar para ser exibida … eu acredito que o problema está na forma em que eu fiz esse “justificador” ( fiz meio na correria pq tinha que coloar isso logo no ar … ) :oops:
O que acontece é que os outros textos ficam com acentuação normal, mas esse que é justificado, onde tem acento é exibido ‘?’ por exemplo contribuição vira contribui??o … O mais gozado é que na minha maquina, funciona mas quando publico isso, num servidor Linux SuSe, acontece isso…
Vou postar aqui o código que faz essa “justificação”
Desde já agradeço qualquer ajuda.

Ronaldo.


		try {
			StringBuffer sbtmp = new StringBuffer(txt.trim()) ;
			sbtmp.append(" ") ;
			char[] c = sbtmp.toString().toCharArray() ;
			StringBuffer sr = new StringBuffer() ;
			String spaces = "           " ;
			int ini   = 0  ;
			int limit = 0 ;
			
			if (c.length-1 > 49)
				limit = 49 ;
			else
				limit = c.length-1 ;
			
			int fin   = limit ;
			int nLoop = 0 ;

			while (nLoop != 2) {
			
				while (c[fin] != ' ') {
					fin -- ;
				}
				sbtmp = new StringBuffer() ;
				sr.append(spaces) ;
				for (int k = ini; k < fin; k++) {
					sbtmp.append(c[k]) ;
				}
				
				sr.append(sbtmp.toString().trim()+"<br>\r\n") ;
				
				ini = fin ;
				fin += limit ;
				
				if (fin > c.length-1) {
					ini = fin - limit ;
					fin = c.length-1 ;
					nLoop++ ;
				}
			}
			ByteArrayOutputStream bout = new ByteArrayOutputStream() ;
			Writer out = new BufferedWriter(
		            new OutputStreamWriter(bout, "ISO-8859-1"));
			out.write(sr.toString()) ;
			out.flush() ;
			return new String(bout.toByteArray()) ;
		} catch (Exception e) {
			// TODO arrumar isso !
			e.printStackTrace();
			return " " ;
		}

Voce provavelmente ta com um conflito de encodings (o encoding padrao do linux eh diferente do windows, e provavelmente nenhum dos dois eh o mesmo do seu banco de dados :))

De uma lida nesse texto: http://www.joelonsoftware.com/articles/Unicode.html

Bom, resolvi na base da apelação do bison …
subistituição dos caracteres aentuados pelos &xacute; da vida … ficou feio mas agora funcionou

Ronaldo.

Bom, deixei a apelação de lado e resolvi ir atras do raiz do problema …
Resolvi configurando alguns parêmetros no TomCat…
CATALINA_OPTS="-Dfile.encoding=iso8859-1"
LC_ALL=pt_BR

Se mais alguem passar por isso, essa é uma possível solução. O server que esta rodando é um SuSe Linux.

abraços

Ronaldo.