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:
Uso el método readUTF() de DataInputStream.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)
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())); }