envio de caracteres raros por un Socket

16/12/2005 - 00:48 por sqsAndres | Informe spam
Señores buenas noches, les escribo porque estoy haciendo una aplicacion c# y
necesito enviar mediante objetos Socket sentencias FTP, el problema es cuando
estas sentencias tienes caracteres como la "Ñ", en el servidor FTP al que le
envio las solicitudes se decodifica en ASCII basico y obviamente no genera un
error.


lo que estoy haciendo es esto:

Byte[] arrBytes = Encoding.UTF8.GetBytes(strLineaComando + "");
int i = this.objSocket.Send(arrBytes, arrBytes.Length, SocketFlags.None);



el problema es cuando strLineaComando tiene uncaracter raro, como ya les
comente, gracias por tomarce el tiempo de leer esta pregunta.
gracias
 

Leer las respuestas

#1 A.Poblacion
16/12/2005 - 07:39 | Informe spam
"sqsAndres" wrote in message
news:
Señores buenas noches, les escribo porque estoy haciendo una aplicacion c#
y
necesito enviar mediante objetos Socket sentencias FTP, el problema es
cuando
estas sentencias tienes caracteres como la "Ñ", en el servidor FTP al que
le
envio las solicitudes se decodifica en ASCII basico y obviamente no genera
un
error.


lo que estoy haciendo es esto:

Byte[] arrBytes = Encoding.UTF8.GetBytes(strLineaComando + "");
int i = this.objSocket.Send(arrBytes, arrBytes.Length, SocketFlags.None);



Piensa que el socket no transmite caracteres, sino bytes. Cuando quieres
enviar un carácter, tienes que convertirlo en bytes utilizando algún tipo de
codificación, que lógicamente tiene que coincidir con la decodificación que
realice el programa que hay al otro lado del socket recibiendo esos bytes y
convirtiéndolos de nuevo en caracteres.
Con el código que has puesto, la codificación que estás usando es la
denominada UTF-8. Si el servidor FTP al que estás conectando no está
configurado para utilizar UTF8, lógicamente no entenderá aquellos caracteres
que en UTF8 se codifiquen de forma distinta a la codificación que esté
usando el servidor.

Si el servidor está en una máquina Windows, probablemente utilice la
codificación Windows-1252, que es la más habitual. Prueba a cambiar donde
dices Encoding.UTF8... por Encoding.GetEncoding(1252)... Si con esto no
funciona, tendrás que buscar la documentación de tu servidor FTP y averiguar
qué clase de codificación utiliza.

Preguntas similares