Encoding

7 respostas
F

Estou trabalhando em um projeto usando java (1.5) e WebSphere. Está ocorrendo erros em caracteres onde vão acentos (çáé) aparece tudo como"?". Quando eu subir a vm com o parâmetro Dfile.encoding=iso-8859-1 funciona normalmente, entretanto gostaria de saber se há um meio de fazer isso no código para não ter que mexer em parâmetros do servidor. Já tentei fazer

request.setCharacterEncoding("iso-8859-1");

Mas isso também não funciona.

7 Respostas

J

FoxMurder:
Estou trabalhando em um projeto usando java (1.5) e WebSphere. Está ocorrendo erros em caracteres onde vão acentos (çáé) aparece tudo como"?". Quando eu subir a vm com o parâmetro Dfile.encoding=iso-8859-1 funciona normalmente, entretanto gostaria de saber se há um meio de fazer isso no código para não ter que mexer em parâmetros do servidor. Já tentei fazer

request.setCharacterEncoding("iso-8859-1");

Mas isso também não funciona.

Tentou o seguinte ?

System.setProperty("file.encoding", "iso-8859-1");
F

Olá Jorge, eu tentei fazer isso, mas também não funcionou?

C

Olá , talvez ajuda tenta fazer assim:

public String paraIso(String string) {

Charset charsetUtf8 = Charset.forName(ISO-8859-1);

CharsetEncoder encoder = charsetUtf8.newEncoder();
Charset charsetIso88591 = Charset.forName("UTF-8");
	CharsetDecoder decoder = charsetIso88591.newDecoder();

	try {
		ByteBuffer bbuf = encoder.encode(CharBuffer.wrap(string));

		CharBuffer cbuf = decoder.decode(bbuf);
		String s = cbuf.toString();
		return s;
	} catch (CharacterCodingException e) {
		e.printStackTrace();
		throw new SystemException(e);
	}
}
C

Ah , o pessoal aqui no serviço achou essa solução , o problema que estava tendo é que existia uma tela para fazer upload de imagens e uma campo input para a descrição da imagem , o conteúdo digitado na descrição com acentos chegava distorcido no banco de dados,tentamos colocar código iso nas páginas , mas tivemos sucesso, então o pessoal pesquisou e encontou a solução do código que te enviei.

H

Você não deveria mudar o encoding da resposta??

response.setCharacterEncoding("iso-8859-1");
F

hugoleo1:
Você não deveria mudar o encoding da resposta??

response.setCharacterEncoding("iso-8859-1");

hugoleo1 Esse trecho não funcionou.

Tentei implementar o código:

public String paraIso(String string) throws SystemException{
        Charset charsetUtf8 = Charset.forName("ISO-8859-1");
        CharsetEncoder encoder = charsetUtf8.newEncoder();

        Charset charsetIso88591 = Charset.forName("UTF-8");
        CharsetDecoder decoder = charsetIso88591.newDecoder();
        String s = "";
        try {
            ByteBuffer bbuf = encoder.encode(CharBuffer.wrap(string));

            CharBuffer cbuf = decoder.decode(bbuf);
            s = cbuf.toString();
        } catch (CharacterCodingException e) {
            logger.info("Erro ao converter: " + e.getStackTrace());
        }
        return s;
    }

Está dando uma exception:

Erro ao converter: java.nio.charset.MalformedInputException: Input length = 1

na linha
CharBuffer cbuf = decoder.decode(bbuf);
O que poderia ser? Cristiano vc chegou a pegar esse erro na sua empresa?

C

Cara , aqui não deu problema nenhum , agora seria interessante vc ver os pscotes que está usando,segue abaixo o código com imports (java.nio) e sem o SystemException criado pela nossa equipe em caso de excessão de sistema.Tenta ai :

import java.nio.ByteBuffer;

import java.nio.CharBuffer;

import java.nio.charset.CharacterCodingException;

import java.nio.charset.Charset;

import java.nio.charset.CharsetDecoder;

import java.nio.charset.CharsetEncoder;

public class Cliente {

public static String paraIso(String string) {
    Charset charsetUtf8 = Charset.forName("ISO-8859-1");
    CharsetEncoder encoder = charsetUtf8.newEncoder();

    Charset charsetIso88591 = Charset.forName("UTF-8");
    CharsetDecoder decoder = charsetIso88591.newDecoder();
    String s = "";
    try {
        ByteBuffer bbuf = encoder.encode(CharBuffer.wrap(string));

        CharBuffer cbuf = decoder.decode(bbuf);
        s = cbuf.toString();
    } catch (CharacterCodingException e) {

    }
    return s;
}
Criado 4 de julho de 2008
Ultima resposta 9 de jul. de 2008
Respostas 7
Participantes 4