Incompatibilidade de fonte no OpenOffice

4 respostas
T

Pessoal,

dei um procurada no Fórum, mas não achei o que preciso. É o seguinte:

Criei uma Classe para criar um relatório dos registros de um banco de dados. O armazenamento no banco é normal, guarda as palavras com todos os caracteres especiais, tais como Ç, ã, º, ª, etc. Bem, quando crio um arquivo PDF pela biblioteca itext, dá tudo certo. Contudo, quando crio um arquivo .rtf por meio da passagem do BUFFER, onde pego as linhas de um arquivo modelo e escrevo em outro arquivo, e utilizo o replace para alterar os campos, o novo arquivo (apenas no linux) desconfigura os caracteres especiais.

Por isso, minha dúvida é:

  • A configuração é feita no banco de dados, no Netbeans ou onde?

=> bem, eu dei uma procurada na internet, mas como a questão é de difícil construção nos critérios de busca, preciso de ajuda.

Pessoal, não quero ser arrogante, pois sou eu quem precisa de ajuda. Mas se for pra ficar dizendo que eu tô com preguiça de procurar, ou se for pra me passar um link que remete a zilhões de outros links, eu agradeço de coração. Penso se é pra ajudar, para que dificultar?

Õbrigado por ajudarem.

Paulo

4 Respostas

E

Em um arquivo .rtf os dados acentuados não são gravados em UTF-8 (que é a codificação padrão do Linux) e sim em Windows-1252, se não me engano. Portanto, ao abrir o arquivo .rtf para ser lido como um arquivo texto, não se deve usar diretamente um new BufferedReader (new FileReader (arquivo)) e sim um new BufferedReader (new InputStreamReader (new FileInputStream (arquivo), “Windows-1252”)).

Ao gravar de volta o arquivo .rtf você tem de fazer o contrário:

new BufferedWriter (new OutputStreamWriter (new FileOutputStream (arquivo), “Windows-1252”))

T

entanglement:
Em um arquivo .rtf os dados acentuados não são gravados em UTF-8 (que é a codificação padrão do Linux) e sim em Windows-1252, se não me engano. Portanto, ao abrir o arquivo .rtf para ser lido como um arquivo texto, não se deve usar diretamente um new BufferedReader (new FileReader (arquivo)) e sim um new BufferedReader (new InputStreamReader (new FileInputStream (arquivo), “Windows-1252”)).

Ao gravar de volta o arquivo .rtf você tem de fazer o contrário:

new BufferedWriter (new OutputStreamWriter (new FileOutputStream (arquivo), “Windows-1252”))

Cara, muito obrigado. Vou tentar aqui e dou o retorno.

Paulo

T
public void CriarArquivoDoc(File fonte, File destino, String obj[], String dados[]) {

        try {

            InputStream in = new FileInputStream(fonte);
            OutputStream out = new FileOutputStream(destino);
            byte[] buf = new byte[1024];
            int len;
            while ((len = in.read(buf)) > 0) {

                out.write(buf, 0, len);
            }
            in.close();
            out.close();

            BufferedReader br = new BufferedReader(new FileReader(fonte));
            //aqui o codigo antigo
            //BufferedWriter bw = new BufferedWriter(new FileWriter(destino));
            // aqui o codigo como sugerido
            OutputStreamWriter bw = new OutputStreamWriter (new FileOutputStream(destino), "Windows-1252");

            while (br.ready()) {
                String linha = br.readLine();
                for(int i = 0; i < obj.length; i++){
                    linha = linha.replaceAll(obj[i], dados[i]);
                }
                bw.write(linha); 
                bw.write("\r\n"); 
            }
            
            br.close();
            bw.flush();
            bw.close();
            
            int resposta;
                resposta = JOptionPane.showConfirmDialog(null, "Despacho criado com sucesso. Deseja abrí-lo?");
                if (resposta == JOptionPane.YES_OPTION) {
                    Desktop.getDesktop().open(destino);
                }

        } catch (IOException e) {
            JOptionPane.showMessageDialog(null, "Erro: " + e);
        }

    }
Galera, acima está o meu código. O Código sugerido até copiou o documento, mas os caracteres especiais continuam desconfigurados.

Alguém pode me ajudar?

Obrigado.

E

Não sei qual é a codificação do arquivo original, pode ser que você tivesse de fazer algo como:

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream (fonte), "______"));

onde _______ é a codificação do arquivo original .

Criado 22 de novembro de 2012
Ultima resposta 3 de dez. de 2012
Respostas 4
Participantes 2