Problema ao ler um arquivo texto

6 respostas
R

Fala galera…

eu tenho um arquivo texto com as informacoes sobre meu banco de dados, user e senha…

qdo criptografei-o, o notepad pediu p/ salva-lo com outro tipo de Encoding…o UNICODE…pois minha criptografia usa caracteres ASCII…

e qdo fui tentar ler o arquivo novamente com esse novo encoding, ele nao consegue pegar as informacoes do arquivo…

sera q o java nao reconhece esse tipo de encoding?? como faze-lo reconhecer??

valew

6 Respostas

Rafael_Steil

O Java trabalha no formato Unicode por default, tanto que o tipo primitivo char eh de 16 bits. Qual o problema que vc esta tendo mais especificamente?? os caracteres vem errados? teria como vc colocar algum codigo que vc esta usando ?

Rafael

R

colocar codigo eh complicado…

mas acontece o seguinte:

no meu arquivo, tenho
Idioma = 1

qdo alterei-o e salvei no formato Unicode, no modo texto nao mudou nada…mas mandei imprimir no console e veio assim:]
i d i o m a = 1

por isso ele nao encontra nada…meu metodo de recuperacao da informacao, passo um parametro…no caso, passo “Idioma”…
ai dah pau…

dukejeffrie

Baioni, eu espero que vc esteja usando Readers e Writers para escrever e ler dos seus arquivos.

Se vc tem um arquivo conhecidamente no formato Unicode, vc tem que lê-lo assim:

FileInputStream fin = new FileInputStream(arqName);
InputStreamReader reader = new InputStreamReader(fin, Charset.forName("UTF-16"));

Senão, ele vai pensar que é o charset default da sua máquina (no nosso caso, normalmente é iso-8859-1).

[]s

R

valew pela dica, cara…

mas ao compilar deu erro nesse Charset…o q vem a ser isso??

dukejeffrie

Esse CharSet é do nio, nem tinha visto.

Acho que tem um parâmetro no construtor do InputStreamReader que aceita direto a String. Use esse. : ))

R

entao cara…

fiz como vc disse…ai vai o codigo…

FileInputStream fis = new FileInputStream(pstrArquivo);
InputStreamReader reader = new InputStreamReader(fis, "UTF-16");
brArquivo = new BufferedReader(reader);

mas na hora de rodar, dah pau qdo tento recuperar a informacao do arquivo…
qdo executo essa linha: (linha 176)

strLinha = brArquivo.readLine().toLowerCase();

dah esse erro:

sun.io.MalformedInputException: Missing byte-order mark
        at sun.io.ByteToCharUnicode.convert(ByteToCharUnicode.java:123)
        at java.io.InputStreamReader.convertInto(InputStreamReader.java:137)
        at java.io.InputStreamReader.fill(InputStreamReader.java:166)
        at java.io.InputStreamReader.read(InputStreamReader.java:249)
        at java.io.BufferedReader.fill(BufferedReader.java:139)
        at java.io.BufferedReader.readLine(BufferedReader.java:299)
        at java.io.BufferedReader.readLine(BufferedReader.java:362)
        at scp.util.clsFerramentas.getParametro(clsFerramentas.java:176)

qual o problema??

valew.

Criado 12 de fevereiro de 2003
Ultima resposta 13 de fev. de 2003
Respostas 6
Participantes 3