Eliminar caracteres estranhos ?[RESOLVIDO]

19 respostas
Metaleiro

Estou importando um arquivo em txt, estão aparecendo alguns caracteres estranhos, tem como eliminar ?

Exemplo : Ôªø123.456

FileReader file = new FileReader(pathArquivo);
BufferedReader reader = new BufferedReader(file);

while((linha = reader.readLine()) != null){

Desde já agradeço !

19 Respostas

mateuscs

Metaleiro

tem como você postar um trecho de seu txt?

Creio que seja definições de arquivo texto para codificação de idiomas.

por exemplo: \u00E7 para Ç
\u00E3 para ã

Metaleiro

Ele está assim :

123.456.789-101234567891011123SP

postei um trecho, na hora que ele importa, aparecem aqueles caracteres, meu arquivo está em UTF8

Obrigado !

pedruhenrik

http://download.oracle.com/javase/6/docs/api/java/text/Normalizer.html

procure por normalizer, talvez ajude.

att,

nel

Oi!

Isso aqui resolve o seu problema.
Basicamente, é utilizar o método replaceAll com regex da seguinte forma:

suaString = suaString.replaceAll("[^\p{ASCII}]", ""));

Veja o link que lhe passei que exemplifica bem isso.
Abraços!!!

Vingdel

Se teu arquivo não tem caractéres especiais, salve-o como ANSI.

Isso vai resolver.

Metaleiro

nel:
Oi!

Isso aqui resolve o seu problema.
Basicamente, é utilizar o método replaceAll com regex da seguinte forma:

suaString = suaString.replaceAll("[^\p{ASCII}]", ""));

Veja o link que lhe passei que exemplifica bem isso.
Abraços!!!

Funciona bem, mas ele acaba ignorando os espaços em branco do meu arquivo, eu preciso deles, obrigado

mateuscs

Metaleiro

Como nosso amigo Vingdel mencinou, se seu arquivo não possuir char especial, salve como ansi, e faça o teste.

Metaleiro

mateuscs:
Metaleiro

Como nosso amigo Vingdel mencinou, se seu arquivo não possuir char especial, salve como ansi, e faça o teste.

Meu arquivo obrigatoriamente tem que ser em ASCII, agora o único problema são os espaços em branco no arquivo.

Exemplo :

18.257.555-4 SSP 133442

Ele me coloca algo do tipo 18.257.555-4/254

Se alguém puder me ajudar, agradeço.

Obrigado a todos

nel

Metaleiro:
mateuscs:
Metaleiro

Como nosso amigo Vingdel mencinou, se seu arquivo não possuir char especial, salve como ansi, e faça o teste.

Meu arquivo obrigatoriamente tem que ser em ASCII, agora o único problema são os espaços em branco no arquivo.

Exemplo :

18.257.555-4 SSP 133442

Ele me coloca algo do tipo 18.257.555-4/254

Se alguém puder me ajudar, agradeço.

Obrigado a todos

Oi! O que seria “meu problema são os espaços em branco” ?
E o que aquele regex que lhe passei faz que não atende a sua necessidade?
E por fim, esse “18.257.555-4/254” seria a saida para uma String com contéudo igual a “18.257.555-4 SSP 133442” ?

Abraços.

Metaleiro

nel:
Metaleiro:
mateuscs:
Metaleiro

Como nosso amigo Vingdel mencinou, se seu arquivo não possuir char especial, salve como ansi, e faça o teste.

Meu arquivo obrigatoriamente tem que ser em ASCII, agora o único problema são os espaços em branco no arquivo.

Exemplo :

18.257.555-4 SSP 133442

Ele me coloca algo do tipo 18.257.555-4/254

Se alguém puder me ajudar, agradeço.

Obrigado a todos

Oi! O que seria “meu problema são os espaços em branco” ?
E o que aquele regex que lhe passei faz que não atende a sua necessidade?
E por fim, esse “18.257.555-4/254” seria a saida para uma String com contéudo igual a “18.257.555-4 SSP 133442” ?

Abraços.

Não, quando pego minha String ele está substituindo todos os espaços em branco por \240\240\240, ele substitui todos eles por isso, e minha aplicação dá erro, muito obrigado !

É o único problema que ainda sobra os espaços em branco, quando leio a o arquivo ele substitui por isso.

Metaleiro

POST DUPLICADO :arrow:

Vingdel

Você já tentou fazer assim?

BufferedReader reader = new BufferedReader( new InputStreamReader(new FileInputStream(pathArquivo), "UTF8"));

Metaleiro

Vingdel:
Você já tentou fazer assim?

BufferedReader reader = new BufferedReader( new InputStreamReader(new FileInputStream(pathArquivo), "UTF8"));

Ocorreu o seguinte :

The constructor BufferedReader(InputStreamReader) is undefined

encontrei isso na net :

BufferedReader

Obrigado

Vingdel

Você tem que importar o pacote.

import java.io.*;

[]'s

nel

Vingdel:
Você tem que importar o pacote.

import java.io.*;

[]'s

Não, o problema não é importação amigo e sim que o construtor somente aceita um Reader e o FileInputStream não é um Reader :slight_smile:
Para remover os espaços em branco, use o:

suaString.split("\s");

Se isso não resolve seu problema, me mostre a String que você possui como entrada, dê uns dois exemplos e como gostaria que fosse a saída da mesma ok?
Abraços.

Vingdel
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(pathArquivo), "UTF8"));

Pois então amigo, nel. BufferedReader pede um reader, que no caso é o InputStreamReader que por sua vez pede um InputStream. O que há de errado?

BufferedReader(Reader in)

InputStreamReader(InputStream in, String charsetName)

FileInputStream(String name)

Não está errada minha sugestão não… Confiram aí!

EDIT: Adicionei o resultado de um teste como imagem em anexo.


nel

Op!

Não vi o InputStreamReader, só vi o FileInputStream e sim, funciona :slight_smile:

Metaleiro

Obrigado a todos, o que disseram funcionou perfeitamente.

Quanto ao arquivo eu estou usando Mac OS e salvei em nom-lossy ASCII, foi isso o que causou os problemas nos espaços em branco, pedi para alguém ver e em outro sistema operacional os caracteres apareciam nos editores, para mim isso era invísivel.

Está tudo resolvido.

F

Vingdel:
Você já tentou fazer assim?

BufferedReader reader = new BufferedReader( new InputStreamReader(new FileInputStream(pathArquivo), "UTF8"));

Opa… Resolveu aqui pra mim!!! vlw!!

Criado 13 de junho de 2011
Ultima resposta 9 de nov. de 2011
Respostas 19
Participantes 6