Problem with special characters

Asked

Viewed 1,577 times

0

i have an application that downloads a csv file from an ftp server and within that file contains product information and the app must insert it into a database, but the special characters are coming "zuados", as in the image below:

inserir a descrição da imagem aqui

so I went to look at the csv file inside the android monitor to see if everything was ok with the product:

inserir a descrição da imagem aqui

this straight, then debugged the app

inserir a descrição da imagem aqui

I came to the conclusion that this occurring at the moment that the app searches the information of CSV file to insert in the bank, but I have no idea how to fix this problem someone can help me?

Import class:

public void importarBanco(){
        try{
            File path = Environment.getExternalStorageDirectory();
            File fileProduto = new File(path, "/Import/produto.csv");
            FileInputStream produtoStream = new FileInputStream(fileProduto);
            BufferedReader lerArqProduto = new BufferedReader(new InputStreamReader(produtoStream));
            String proLinha = lerArqProduto.readLine();

            while (proLinha != null){
                String[] proDados = proLinha.split(";");
                String codigo = proDados[0];
                String barras = proDados[1];
                String descricao = proDados[2];
                String venda1 = proDados[3];
                String venda2 = proDados[4];
                String venda3 = proDados[5];

                String resultado = proCrud.insereProduto(codigo, barras, descricao, venda1, venda2, venda3);
                proLinha = lerArqProduto.readLine();
            }
            lerArqProduto.close();

            File fileCliente = new File(path, "/Import/cliente.csv");
            FileInputStream clienteStrem = new FileInputStream(fileCliente);
            BufferedReader lerArqCliente = new BufferedReader(new InputStreamReader(clienteStrem));
            String parLinha = lerArqCliente.readLine();

            while (parLinha != null){
                String[] parDados = parLinha.split(";");
                String codigo = parDados[0];
                String nome = parDados[1];
                String cpf = parDados[2];
                String rg = parDados[3];
                String endereco = parDados[4];
                String bairro = parDados[5];
                String municipio = parDados[6];
                String uf = parDados[7];

                String resultado = parCrud.insereCliente(codigo, nome, cpf, rg, endereco, bairro,
                        municipio, uf);
                parLinha = lerArqCliente.readLine();
            }
            lerArqCliente.close();

            File fileLogin = new File(path, "/Import/login.csv");
            FileInputStream loginStream = new FileInputStream(fileLogin);
            BufferedReader lerArqLogin = new BufferedReader(new InputStreamReader(loginStream));
            String logLinha = lerArqLogin.readLine();

            while(logLinha != null){
                String[] logDados = logLinha.split(";");
                String usuario = logDados[0];
                String senha = logDados[1];

                String resultado = lCrud.insereLogin(usuario, senha);
                logLinha = lerArqLogin.readLine();
            }
            lerArqLogin.close();

        }catch (Exception e){
            e.getStackTrace();
        }
    }
  • 5

    You can’t add something like charset = UTF-8 or charset = Windows-1252

  • 1

    Whenever you have this problem, you can bet that the cause is encoding. I think R. Santos' comment should be a question. Finally, try to load the CSV indicating an encoding.

2 answers

4


The moment you upload the file to the BufferedReader, pass the charset as parameter.

File path = Environment.getExternalStorageDirectory();
File fileProduto = new File(path, "/Import/produto.csv");
FileInputStream produtoStream = new FileInputStream(fileProduto);
BufferedReader lerArqProduto = new BufferedReader(new InputStreamReader(produtoStream, "ISO-8859-1"));
  • 2

    worked out, thank you very much

-1

You can try to declare the FileOutPutStream thus:

 new FileOutputStream("outfilename"), "UTF-8"));

Browser other questions tagged

You are not signed in. Login or sign up in order to post.