Problemas com UTF8

9 respostas
K

Pessoa to querendo fazer a seguinte conversão:

String mensagem = "S?O PAULO";       
byte[] teste = mensagem.getBytes("iso-8859-1");
String sfinal = new String(teste,"UTF-8");
System.out.println(sfinal);

Mas no momento da conversãofica assim: S?O PAULO

Resumindo, estou com problemas na conversão com caracteres acentuados maiúsculos. Somente os MAIÚSCULOS

Se alguém puder ajudar nesse momento auhahu agradeço! :smiley:

9 Respostas

H

Estou com o mesmo problema ao importar um arquivo ASCII.

K

será que alguem ja passou por esse problema ai?

B

Vamos por partes.

khaue: Copiar uma string diretamente no código fonte não vai da certo mesmo. Mas acredito que você não esta fazendo isso. Então como que você esta obtendo a string original?

Harley: O arquivo que você esta lendo esta em ascii mesmo? Não é iso-8895-1? E como você esta fazendo para ler e converter?

E para os dois: Vocês configuraram o projeto certinho para utf-8?

Falou.

G
Esse código não funciona mesmo:
[email removido:
]
String mensagem = "S?O PAULO";
// Aqui você está pedindo para converter para bytes, usando  a codificação ISO-8859-1
byte[] teste = mensagem.getBytes("iso-8859-1");
// Neste ponto o array teste contém uma sequencia de bytes representando a string SÃO PAULO, no encoding  ISO-8859-1

// Aqui vai mandar decodificar esse array usando o encoding UTF-8. Ou seja, não é o mesmo com que ela foi codificada.
String sfinal = new String(teste,"UTF-8");

// A string não contém os dados corretos.
System.out.println(sfinal);
O ponto a observar aqui é que o construtor new String(teste,"UTF-8") não faz nenhum tipo de conversão entre encodings diferentes. O segundo parâmetro serve apenas para informar EM QUAL ENCODING A INFORMAÇÃO JÁ ESTÀ.

Qual seria a sua necessidade? Conte mais detalhes para que seja possível encontrar a melhor alternativa.

H

bruno.fantin:
Vamos por partes.

khaue: Copiar uma string diretamente no código fonte não vai da certo mesmo. Mas acredito que você não esta fazendo isso. Então como que você esta obtendo a string original?

Harley: O arquivo que você esta lendo esta em ascii mesmo? Não é iso-8895-1? E como você esta fazendo para ler e converter?

E para os dois: Vocês configuraram o projeto certinho para utf-8?

Falou.

Bruno,

Estou recebendo um arquivo ascii com são paulo, roça...  Preciso na verdade, é converter os caracteres com acento Ex.: "ã" para "a" e "ç" para "c".

Código:

conn = getConnection();
			pstmt = conn.prepareStatement("delete from CAD_PEDIDO where CONTROLE = 1");
			pstmt.executeUpdate();
			
	    	FileInputStream file_in = new FileInputStream(nomeArquivo);
	    	
	    	ByteArrayOutputStream baos = new ByteArrayOutputStream();
	    	byte[] buffer = new byte[8192];
			int bytesRead = 0;
	                
			while ((bytesRead = file_in.read(buffer, 0, 8192)) != -1) {
			   baos.write(buffer, 0, bytesRead);
			}
			file_in.close();
			file_in = null;
			String data = new String(baos.toByteArray());
			StringTokenizer registros = new StringTokenizer(data, "\r\n");
			
			while (registros.hasMoreTokens()) {
				final StringBuffer obs = new StringBuffer();
				
			   StringTokenizer registro = new StringTokenizer(registros.nextToken().trim(), "|");
			   
			   String campos[] = new String[registro.countTokens()];
					   
			   for(int ind=0;registro.hasMoreTokens();ind++) {
				 campos[ind] = registro.nextToken().trim();			
				 if (ind==0) {
					 //System.out.println("Elemento : " + ind + " - " + campos[ind]);
					 
				 }
			   }

Vlw pela ajuda Bruno

B

Harley.

Se você tem certeza que o arquivo esta como ascii, então só muda essa linha, indicando que o array de bytes é em formato ascii.

String data = new String(baos.toByteArray(), "US-ASCII");
K

Bom, eu recebo um texto em formato ISO-8859-1. Esse texto vem de um web service feito em C#. Quero usá-lo no JAVA. Porém fica com errosn a utilizadação, esses erros de encoding ai

L

O segundo parametro do construtor da string não está escrevendo, apenas assumindo que o encoding da leitura é UTF-8.

Você deve ler o stream em ISO-8859-1 e escrever no encoding esperado ( no teu caso, UTF-8 ). Essa é a ideia, e tem muitos exemplos na internet de como fazer essa conversão de encoding.

L

Alguns exemplos que encontrei:

http://xahlee.org/java-a-day/convert_charset.html

http://www.exampledepot.com/egs/java.nio.charset/ConvertChar.html

Criado 17 de junho de 2011
Ultima resposta 21 de jun. de 2011
Respostas 9
Participantes 5