Problemas com Enconding em arquivo - BufferedReader e Writer - acentuação

1 resposta
M

Olá estou com um problema em relação ao enconding dos arquivos. Estou usando o Ubuntu 9.04.

Estou usando o seguinte código para ler um arquivo passado para mim (creio que foi criado no Windows)

public LeitorTXT(String caminho) throws FileNotFoundException {
        BRarquivo = new BufferedReader(new FileReader(caminho));
        caminhoArquivo = new File(caminho).getAbsolutePath();
    }

e para ler todo o conteúdo do arquivo

public StringBuilder lerArquivo() throws IOException {
        StringBuilder conteudo = new StringBuilder();
        BufferedReader in = new BufferedReader(new FileReader(caminhoArquivo));
        while (in.ready()) {
            conteudo.append(in.readLine());
        }
        return conteudo;
    }

para escrever

Writer arquivo;

public void abrirArquivo(String caminhoArquivo, boolean append) throws FileNotFoundException, IOException {
System.setProperty("file.enconding", "UTF-8");
        arquivo = new OutputStreamWriter(new FileOutputStream(caminhoArquivo), "UTF-8");        
        this.caminhoArquivo = new File(caminhoArquivo).getAbsolutePath();
    }

 public void escrever(final StringBuilder conteudo) throws FileNotFoundException,
            IOException {
        if (arquivo != null) {
            arquivo.write(conteudo.toString());
            arquivo.flush();
        } else {
            throw new FileNotFoundException();
        }
    }

A variável append não esta sendo porque ainda preciso aprender como escrever usando um Writer sem apagar o conteúdo já escrito. Alguma dica?

O problema é que a acentuação está saindo errada (?), como posso resolver isto ? Eu precisaria converter o enconding do arquivo para UTF-8, mas não sei como fazer. Tentei usar esta função, depois de muito procurar:

/**
     * Converte o formato ISO8859-1 (default IE) para UTF-8
     */
    public static String toUTF8(String isoString) {
        String utf8String = null;
        if (null != isoString && !isoString.equals("")) {
            try {
                byte[] stringBytesISO = isoString.getBytes("ISO-8859-1");
                utf8String = new String(stringBytesISO, "UTF-8");
            } catch (UnsupportedEncodingException e) {
                // Mostra exceção mas devolve a mesma String
                System.out.println("UnsupportedEncodingException: " + e.getMessage());
                utf8String = isoString;
            }
        } else {
            utf8String = isoString;
        }
        return utf8String;
    }

Mas não funcionou porque não sei se o arquivo esta mesmo neste enconde (ISO-8859-1). Como posso me certificar?

Abraço.

1 Resposta

M

Achei a resposta, http://comofoiquefiz.blogspot.com/2009/06/ler-arquivo-usando-determinado-unicode.html

abraço.

Criado 17 de junho de 2009
Ultima resposta 17 de jun. de 2009
Respostas 1
Participantes 1