• Viernes 8 de Noviembre de 2024, 21:36

Autor Tema:  Problema ASCII - Caracteres Con Tilde  (Leído 2202 veces)

sergio_

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Problema ASCII - Caracteres Con Tilde
« en: Sábado 29 de Octubre de 2011, 03:43 »
0
Buen dia gente!

Vengo a consultar sobre un problema que tengo con un tp T_T

Estoy en "C"
Resulta que estoy levantado en un buffer contenido de archivos de texto plano, y la idea es ir obteniendo palabras a partir del buffer
Los archivos de texto pueden estar en cualquier idioma

Por ejemplo:

Buffer = "Hola , cómo andan? todo bien gente?, espero que si! ;)"

Filtrando el buffer debería obtener los siguientes terminos

HOLA, COMO, ANDAN, TODO, BIEN, GENTE, ESPERO, QUE, SI

El filtrado de los signos de puntuación ya lo tengo, tmb manejo el tema de si el buffer me corta una palabra por la mitad y todo eso.
Para el filtrado lo que hago es fijarme que el caracter del buffer (Buffer[Pos]) pertenezca a los intervalos del Ascii  [65,90] ^ [97,122] ^ [128,165]

(Segun la tabla del ascii)
El intervalo [65,90] es para las minusculas
El intervalo [97,122] es para las mayusculas
El intervalo [128,165] es para las tildes y otras cosas raras

el problema que tengo con los tildes es que el codigo en 8 bits no pertenece a ese intervalo, o sea, ni siquiera son 8 bits por lo que veo

les dejo un ejemplo del codigo para ver los caracteres

Código: C
  1.  
  2. //Un Buffer levantado del disco que vale = Cómo estás
  3.         printf("Entre a obtener terminos con el buffer %s\n",buffer);
  4.         while (i != caractleidos){
  5.                 printf ("Caracter del buffer %c\n",buffer[i]);
  6.                 printf ("ASCII Caracter del buffer (sin signo) %u\n",buffer[i]);
  7.                 printf ("ASCII Caracter del buffer (con signo) %u\n",buffer[i]);
  8.                 i++;
  9.         }
  10.  
  11. //Salida por consola:
  12. Caracter del buffer C
  13. ASCII Caracter del buffer (sin signo) 67
  14. ASCII Caracter del buffer (con signo) 67
  15. Caracter del buffer
  16. ASCII Caracter del buffer (sin signo) 4294967235
  17. ASCII Caracter del buffer (con signo) -61
  18. Caracter del buffer �
  19. ASCII Caracter del buffer (sin signo) 4294967219
  20. ASCII Caracter del buffer (con signo) -77
  21. Caracter del buffer m
  22. ASCII Caracter del buffer (sin signo) 109
  23. ASCII Caracter del buffer (con signo) 109
  24. Caracter del buffer o
  25. ASCII Caracter del buffer (sin signo) 111
  26. ASCII Caracter del buffer (con signo) 111
  27. Caracter del buffer  
  28. ASCII Caracter del buffer (sin signo) 32
  29. ASCII Caracter del buffer (con signo) 32
  30. Caracter del buffer e
  31. ASCII Caracter del buffer (sin signo) 101
  32. ASCII Caracter del buffer (con signo) 101
  33. Caracter del buffer s
  34. ASCII Caracter del buffer (sin signo) 115
  35. ASCII Caracter del buffer (con signo) 115
  36. Caracter del buffer t
  37. ASCII Caracter del buffer (sin signo) 116
  38. ASCII Caracter del buffer (con signo) 116
  39. Caracter del buffer
  40. ASCII Caracter del buffer (sin signo) 4294967235
  41. ASCII Caracter del buffer (con signo) -61
  42. Caracter del buffer �
  43. ASCII Caracter del buffer (sin signo) 4294967201
  44. ASCII Caracter del buffer (con signo) -95
  45. Caracter del buffer s
  46. ASCII Caracter del buffer (sin signo) 115
  47. ASCII Caracter del buffer (con signo) 115
  48. Caracter del buffer
  49.  
  50.  
  51.  

Por lo que veo es como que tiene un flag adelante, o algo por el estilo y despues viene un caracter basura o algo asi

proba poniendo unsigned char, y me sigue pasando lo mismo pero con distintos numeros

si alguien me puede dar una mano estaria agradecido!
 



su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re:Problema ASCII - Caracteres Con Tilde
« Respuesta #1 en: Miércoles 16 de Noviembre de 2011, 04:05 »
0
Mi teoria es que estas usando Windows y el fichero esta codificado (probablemente "Windows-1252") o buffer no es unsigned.

Si es el primer caso busca una funcion para abrir ficheros en Unicode, pero estoy casi seguro que es el segundo caso.
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.