Charset / Encoding

4 respostas
KIMBA

Estou usando JExcel para ler um arquivo, porém estou tendo problemas assim:

Quando a palavra é por exemplo "MÁQUINA", o java lê assim: "M\ufffdQUINA", pois bem, como faço para converter isso de volta para "MÁQUINA" ?
Para que possa ser salvo no meu banco de dados?

Estou tentando assim:

public String decoder(String str) {

  
 
        Charset charsetOrigem = Charset.forName("UTF-8");  
        CharsetEncoder encoderOrigem = charsetOrigem.newEncoder();
        Charset charsetDestino = Charset.forName("windows-1252");
        CharsetDecoder decoderDestino = charsetDestino.newDecoder();
        
        String s = "";

        try {
            ByteBuffer bbuf = encoderOrigem.encode(CharBuffer.wrap(str));
            CharBuffer cbuf = decoderDestino.decode(bbuf);
            s = cbuf.toString();
        } catch (CharacterCodingException e) {
            e.printStackTrace();
        }

        return s;
    }

Grato.

4 Respostas

Paulo_Silveira

oi kimba

deveria ser algo por ai. qual é o resultado tentando esse seu codigo pra entrada do maquina?

renatosilva

Cara o \ufffd (�) é o replacement character. Ele indica que não foi possível decodificar certos bytes usando o encoding atual. Não tem como obter a string original a partir dele, você tem que evitar que ele apareça, ou seja, tem que usar o encoding correto para decodificar os bytes. Talvez o JExcel precise ser informado sobre qual encoding usar para ler o arquivo, não sei…

KIMBA

Fala gente, obrigado pelas respostas!

Paulo, fiz uma rotina pra ir testando todos os Charsets… em cada um dava um resultado mais exdrúxulo que o outro.

Renato… já pelejei na documentação desse JExcel… eu imagina que realmente ele deveria permitir informar a a codificaçao na hora de abrir, mas não é assim não, pelo menos não achei!

renatosilva

Relata o bug aos desenvolvedores do JExcel então…

Criado 12 de setembro de 2009
Ultima resposta 15 de set. de 2009
Respostas 4
Participantes 3