Programación General => C/C++ => Mensaje iniciado por: DAVID_CODER en Jueves 16 de Noviembre de 2006, 18:36
Título: Problema Con Caracteres Especiales
Publicado por: DAVID_CODER en Jueves 16 de Noviembre de 2006, 18:36
Hola a todos, soy nuevo en este foro, y kisiera saber como puedo escribir caracteres especiales del idioma español, (tales como '¿', '¡', 'ñ', 'º' y 'ª') asi como otros de otros idiomas ('ç'), en un archivo de texto mediante ANSI-C, sin que salgan caracteres extraños Gracias por adelantado
Título: Re: Problema Con Caracteres Especiales
Publicado por: Bicholey en Jueves 16 de Noviembre de 2006, 21:14
;)
Yo recuerdo que cuando tenia esa clase de problemas lo unico que hacia era crear una funcion que me cambiara caracter por caracter por ejemplo al leer un archivo de texto y leer una ñ en pantalla me mostraba +_ entonces hacia la funcion que me comparaba todos los caracteres y me los cambiaba por los caracteres adecuados y listo, esperemos y quiza alla mejores ideas.
Título: Re: Problema Con Caracteres Especiales
Publicado por: DAVID_CODER en Jueves 16 de Noviembre de 2006, 21:20
Yo me referia, a como puedo crear un archivo de texto con C, en el que pueda escribir caracteres como la ñ, y que luego no se lea un caracter extraño en lugar de la ñ. He leido que se podria hacer algo con locale.h pero toda la informacion esta en ingles puede resolverse con utf8 programming? y en tal caso como hacerlo? alguien dispone de un extracto de codigo, una url con informacion? gracias!!!!
Título: Re: Problema Con Caracteres Especiales
Publicado por: Eternal Idol en Jueves 16 de Noviembre de 2006, 21:21
Mejor usar Unicode y no ASCII.
Título: Re: Problema Con Caracteres Especiales
Publicado por: DAVID_CODER en Jueves 16 de Noviembre de 2006, 21:26
OK, y como utilizar UNICODE en ANSI-C? que libreria utilizar? gracias!!
Título: Re: Problema Con Caracteres Especiales
Publicado por: Eternal Idol en Jueves 16 de Noviembre de 2006, 21:38
wchar_t es el equivalente a char y necesitas poner L delante de la comillas para indicar que es un Unicode, con Unicode podes usar texto en cualquier idioma como Japones, Chino o Arabe por ejemplo.
Código: Text
#include <stdio.h>
void main()
{
wchar_t cadena[] = L"Este texto esta en español";
Si abris el archivo txt con el notepad lo vas a ver correctamente, si haces type del mismo seguramente la ñ salga mal B) (Es lo que queremos, el notepad es capaz de leer Unicode).
Título: Re: Problema Con Caracteres Especiales
Publicado por: DAVID_CODER en Viernes 17 de Noviembre de 2006, 01:53
He compilado tu codigo y me da el siguiente error: Converting to execution character set: invalid argument 4:22 La linea cuatro caracter 22 pertenece a la L que va delante de las comillas.
Título: Re: Problema Con Caracteres Especiales
Publicado por: Eternal Idol en Viernes 17 de Noviembre de 2006, 08:11
Cita de: "DAVID_CODER"
He compilado tu codigo y me da el siguiente error: Converting to execution character set: invalid argument 4:22 La linea cuatro caracter 22 pertenece a la L que va delante de las comillas.
¿Que compilador usas? ...
Título: Re: Problema Con Caracteres Especiales
Publicado por: DAVID_CODER en Viernes 17 de Noviembre de 2006, 10:43
Uso el DEVCPP
Título: Re: Problema Con Caracteres Especiales
Publicado por: DAVID_CODER en Viernes 17 de Noviembre de 2006, 10:46
El compilador es GCC que esta integrado en DEVCPP
Título: Re: Problema Con Caracteres Especiales
Publicado por: Eternal Idol en Viernes 17 de Noviembre de 2006, 11:04
Lo que da error es la ñ y no la L, proba a compilar sin la ñ ... o usa VC++ que te lo compila con la ñ e incluso si grabas el fuente en Unicode desde el notepad ...
Título: Re: Problema Con Caracteres Especiales
Publicado por: DAVID_CODER en Sábado 18 de Noviembre de 2006, 19:53
en windows me compila si kito la ñ, en debian/linux con el gcc me compila el codigo integro k me has facilitado, pero al editarlo con "vi" o con "less" me sale algo como:
en windows si kito la ñ, compila y al editar con el bloc de notas sale:
e s t e t e x t o e s t a e n e s p a o l
Título: Re: Problema Con Caracteres Especiales
Publicado por: Eternal Idol en Sábado 18 de Noviembre de 2006, 20:02
No se, ni quiero sabe, si vi o less soportan Unicode. Probablemente la historia con el notepad sea que segun lei por ahi gcc usa 4 bytes para cada caracter en vez de dos como Windows. Busca info en el Google/Wikipedia si queres saber mas al respecto, creo que habia una forma de hacer trabajar al gcc con 2 bytes.
Título: Re: Problema Con Caracteres Especiales
Publicado por: DAVID_CODER en Sábado 18 de Noviembre de 2006, 20:05
si bueno, me parece haber leido k gcc trabaja a 16 bytes y las wchar_t son de 32, pero bueno, gracias por todo, 1 saludo