Título: Error codificacion de caracteres? HTTP Download Publicado por: Vaagish en 1 Octubre 2013, 22:36 pm Buenas amigos! Alguien sabe porque no se pueden escribir ciertos caracteres con fopen? Aqui dejo el code y el error al final del mismo
Código: #include <winsock2.h> Bueno, el problema es que la respuesta del servidor es: Código: HTTP/1.1 200 OK Bueno, con el editor de texto borro todo lo que tiene que ver con HTTP, pero aun asi, al abrir con el editor de texto la imagen descargada con el navegador web, veo que no es igual la codificacion, al parecer no "reconoce" ciertos caracteres al guardarlos en el archivo de texto, y corrompe el archivo.. Como podria solucionar esto ?? :/ Gracias! Título: Re: Error codificacion de caracteres? HTTP Download Publicado por: Vaagish en 1 Octubre 2013, 22:47 pm Ahora que profundizo un poco mas en el code, me doy cuenta que me cambia todos los "\r\n" por "\n" o sea, el png original tiene "\r\n" y el mio solo "\n" como fin de linea... :/
tengo que recorrer el code y cambiarlo "a mano" ?? EDITADO: Pff,, Ahora entiendo que esto tiene que ver con el formato Unix y Windows... Estoy por enfermar,, podria funcionar algo asi? Que les parece? Código: DWORD WINAPI Descargar (void* Nada) Título: Re: Error codificacion de caracteres? HTTP Download Publicado por: eferion en 2 Octubre 2013, 11:00 am Supongamos que te llega ABC\nDEF
Tu strncpy dejaría la cadena tal que: ABC\r\n\EF strncpy( Pos, "\r\n", 4 ) no desplaza lo que haya detrás... lo sobreescribe. En cualquier caso, si tu quieres recuperar la imagen, y solo la imagen, tienes que eliminar toda la cabecera http que te envía el servidor y quedarte únicamente con el código de la imagen. La respuesta del servidor no va a generar por si sola una imagen válida, ya que la cabecera http no está contemplada en ningún estándar de ficheros de imagen. Título: Re: Error codificacion de caracteres? HTTP Download Publicado por: rir3760 en 2 Octubre 2013, 19:17 pm La función "Descargar" la puedes acortar a:
Código
También debes abrir el archivo en modo binario con "wb" y falta cerrarlo llamando a fclose. Un saludo Título: Re: Error codificacion de caracteres? HTTP Download Publicado por: Vaagish en 2 Octubre 2013, 19:28 pm Gracias por las respuestas! La cabecera HTTP la pensaba eliminar con alguna funcion de cadenas, eso no me preocupa mucho.. el problema es la codificacion.. se supone que yo deba solucionarlo con codigo? me parece raro, porque es un archivo, no un texto.. no deberia de respetar el contenido del archivo binario tal cual es? sino como es que se pueden abrir archivos de imagen tanto en linux como en windows??? No lo entiendo..
Gracias! EDITADO: Listo! El problema era abrir el archivo como "w+" y no como "wb" como dice rir3760! Gracias again! :D Título: Re: Error codificacion de caracteres? HTTP Download Publicado por: eferion en 2 Octubre 2013, 19:59 pm Los archivos de imagen se basan en un estándar. Dicho estándar rige las normas de codificación. Entre esas normas se detallan los posibles saltos de línea.
Tu piensa que estos estándares van ligados al formato, no al sistema operativo, lo que permite que la imagen se pueda abrir y guardar sin problemas en cualquier sistema operativo. Título: Re: Error codificacion de caracteres? HTTP Download Publicado por: Vaagish en 3 Octubre 2013, 06:16 am A modo de completar el tema.. por si alguien se ve en la misma situación.. para poder cortar la cabecera HTTP se puede buscar la siguiente secuencia (al menos en archivos binarios) "\r\n\r\n" pues entre la cabecera y la información binaria se dejan 2 espacios ::)
Saludos! |