Utilizamos cookies propias y de terceros para mejorar la experiencia de navegación, y ofrecer contenidos y publicidad de interés. Al continuar con la navegación entendemos que se acepta nuestra política de cookies.
Tengo dos aplicaciones que se comunican enviándose texto plano empleando sockets. Funcionan correctamente pero los caracteres especiales como las tildes o ñ no se muestran bien.
Lo extraño es que las dos aplicaciones utilizan codificación UTF-8. Utilizo Netbeans y en las propiedades del proyecto, pestaña Fuentes, veo que la codificación es UTF-8.
A veces en las aplicaciones, aunque usen UTF-8 (me ha pasado en otros lenguajes) no cogen los caracteres especiales correctamente, cuando es así, lo mejor que puedes hacer es subtituirlo por el código ASCII correspondiente.
Seguramente haya otras ideas que te vayan mejor, pero a mí se me ha ocurrido esto.
No tiene nada que ver la codificación de los fuentes con la codificación del texto que tú envíes o recibas por sockets (o leas de ficheros, dado el caso).
Así que, como es lógico, lo que tienes que revisar es la codificación de los datos que envías/recibes.
No consigo indicar que quiero trabajar con codificación en UTF-8.
Dado que la aplicación se comunica a través de sockets, indico tanto en el buffer de entrada como en el de salida que quiero trabajar con "UTF-8" y esto lo hago en las dos aplicaciones que comunico. El código es el siguiente:
1
2
3
bufferEntrada = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8"));
bufferSalida = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),"UTF-8")), true);
Aún así, las tildes, por ejemplo, siguen sin verse correctamente.