Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: javiel en 16 de Octubre de 2007, 08:49:21 AM

Título: Crear un archivo con UTF-8
Publicado por: javiel en 16 de Octubre de 2007, 08:49:21 AM
Hola a todos

Estamos en fase de terminar el juego, bueno... supongo que en dos meses estará listo, y me estoy encontrando con problemas que no se exactamente como solucionar y son bastante jodidos....

La cosa es que en el juego creado diferentes archivos XML con configuraciones y datos de los niveles y eso, y me he encontrado el problema que cuando mete una ñ o un acento en el XML luego no puedo cargarlo. Me he dado cuenta que los archivos se crean en ISO-8859-15 y cuando los paso a UTF-8 ya funcionan perfectamente

Uso "fopen" de esta manera:

f = fopen((char*)file.c_str(), "w+");

y voy haciendo los fwrite línea por línea

fwrite(tmp_val, strlen(tmp_val), 1, f);

la cuestión es ¿como podría hacer para crear directamente los archivos en UTF-8? ¿puedo hacerlo de esta forma o tendría que cambiar el código para generar los archivos de otra manera?

muchas gracias de verdad, me estáis salvando la vida estos días
Título: Crear un archivo con UTF-8
Publicado por: LC0 en 16 de Octubre de 2007, 10:00:55 AM
Resumiendo, char solo te vale para carácteres cortos. Abrirte el fichero te lo va a hacer bien. pero luego, si haces un strlen una ñ te contará como dos carácteres, por ejemplo.  Así que hay que recurrir a los wchar que por lo menos pueden almacenar carácteres de hasta 16 bits* (siempre que no metas en el xml sánscrito, chino o nepalí te vale :lol:).

Mírate estos enlaces:
http://www.opengroup.org/onlinepubs/007908775/xsh/wchar.h.html
http://icu-project.org/docs/papers/unicode_wchar_t.html

EDITO: * 16 --creo-- que es lo que da gcc, pero es algo dependiente del compilador. Si alguien puede verificarlo se agradecería.
Título: Re: Crear un archivo con UTF-8
Publicado por: Tei en 16 de Octubre de 2007, 12:31:11 PM
Otra posible solución es especificar en las cabeceras del XML que estáis usando iso-8859-1.

<?xml version="1.0" encoding="ISO-8859-1"?>
Título: Crear un archivo con UTF-8
Publicado por: shephiroth en 16 de Octubre de 2007, 03:12:09 PM
Ahora que ya sabes como es la dinamica interna de los xml, yo te aconsejaria usar alguna libreria que ya tiene esos temas controlados.
Título: Crear un archivo con UTF-8
Publicado por: zxs en 16 de Octubre de 2007, 03:27:39 PM
Usa VB.NET para hacer una aplicación sencilla para construir los XML. No vas a tardar tiempo y lo poco que ganes, lo recuperaras luego.
Título: Crear un archivo con UTF-8
Publicado por: tamat en 16 de Octubre de 2007, 03:43:45 PM
TinyXML soporta UTF8