Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Crear un archivo con UTF-8

Iniciado por javiel, 16 de Octubre de 2007, 08:49:21 AM

« anterior - próximo »

javiel

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
uper-Tirititran: el superhéroe gaditano (http://www.super-tirititran.com)

LC0

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.

Tei

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"?>

shephiroth

Ahora que ya sabes como es la dinamica interna de los xml, yo te aconsejaria usar alguna libreria que ya tiene esos temas controlados.

zxs

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.

tamat

Por un stratos menos tenso






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.