Foros del Web » Programación para mayores de 30 ;) » Java »

Error DataInputStream

Estas en el tema de Error DataInputStream en el foro de Java en Foros del Web. Muy buenas. He creado un juego en Flash y perfectamente he conseguido que funcione todo, menos una perte. Resulta que cuando en el juego el ...
  #1 (permalink)  
Antiguo 06/04/2012, 17:18
 
Fecha de Ingreso: octubre-2009
Mensajes: 14
Antigüedad: 14 años, 7 meses
Puntos: 0
Error DataInputStream

Muy buenas.

He creado un juego en Flash y perfectamente he conseguido que funcione todo, menos una perte. Resulta que cuando en el juego el usuario habla por el chat, si este mensaje contiene tildes, eñes, o carácteres españoles como (¡, ¿) se corta y envía de ese carácter hacia atrás y si se pone el carácter al principio lanza esta exepción:

Código:
java.io.UTFDataFormatException: malformed input: partial character at end
	at java.io.DataInputStream.readUTF(DataInputStream.java:643)
	at java.io.DataInputStream.readUTF(DataInputStream.java:564)
	at com.energy.communication.in.Talk.run(Talk.java:45)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
	at java.util.concurrent.FutureTask.run(FutureTask.java:166)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)
Uso el método readUTF() de DataInputStream.
PD: El DataInputStream lo formo de la siguiente manera:
Código:
public void ReadMessage(ChannelBuffer Message, MessageEvent e) throws Exception
      {
    	  int Header = Message.readShort();
    	  String Analized = "<No recibe más datos>";
    	  if(Message.readableBytes() > 0)
    	  {
    		  Analized = "";
    		  Message.markReaderIndex();
    		  while(Message.readableBytes() != 0)
    		  {
    			  byte[] b = new byte[] { Message.readByte() };
    			  Analized += (new String(b)).toString();
    		  }
        	reader = new DataInputStream(new ByteArrayInputStream(Analized.getBytes()));
}
  #2 (permalink)  
Antiguo 09/04/2012, 09:21
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Error DataInputStream

Seguramente sea un error de codificación.

¿Tienes indicado UTF-8 como formato de codificación?

A lo mejor pillando el texto y transformando esos caracteres en sus equivalentes unicode puedes manejarlos correctamente.

Ejemplo:
ó = \u00f3
í = \u00ed
ñ = \u00f1
º (de Nº)= \u00ba

Recuerda que con mayúsculas o minúsculas son caracteres distintos y tienen distinta representación unicode. Suerte.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}

Etiquetas: datainputstream, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:52.