Codificación mal al leer de un .txt

Started by Ryo Suzuki, June 11, 2017, 11:04:17 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Ryo Suzuki

Estoy usando para mi proyecto mucho texto, como quizás he mencionado, y me iría bastante bien almacenarlo en archivos de texto para una edición más cómoda y demás...

El caso es que he estado mirando el ejemplo de la wiki para el filehandle:

http://wiki.bennugd.org/index.php?title=FileHandle

Y no me funciona del todo bien. Tanto si hago un say o un print en pantalla no me muestra los carácteres con acentos bien, ni la ñ, etc...

Es un problema de codificación del archivo .txt? Tengo que guardarlo de alguna forma particular?

O es de BennuGD en sí que tengo que especificar una codificación de carácteres o algo?

Gracias como siempre por la ayuda!!

Drumpi

Es un problema que siempre he tenido con el tema de los textos: Bennu, al igual que Fenix, heredaron el sistema de codificación de DIV, que quedó obsoleto, y añadieron otro más moderno, que no sé si es el que viene por defecto. Hay una variable global, pero no recuerdo el nombre, que permite definir el formato, pero ni estoy en el equipo ni en la hora para ser más precisos.
Si ejecutas un juego en modo debug y sacas la consola de debug, entre las variables globales la reconocerás. Sólo he podido encontrar una página en la que se mencionan ambos CHARSET:
http://wiki.bennugd.org/index.php?title=Graphical_infotypes

La cosa es que puede que tus ficheros estén en un formato, Bennu en otro, y el teclado vete tú a saber ¡Imagina los programadores web que lidian, literalmente, con cientos de charsets cada día de todo el mundo! :S
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Ryo Suzuki

Gracias, amigo.

Pero no veo la variable que comentas:



Las de text no parecen ser porque hacen referencia a textos dinámicos parece ser, cosa que no es mi caso.

He intentado guardar el texto en diferentes codificaciones con un editor de texto más avanzado pero no he conseguido que funcione ninguna, esto es lo que obtengo:



Cuando mi texto de prueba en realidad reza:

Coño no me va esa letra más los acentos :(

Y la sugerencia que me das relativa a CHARSET_ que es interesante le he estado echando un ojo y parece solo para gráficos de fuentes, no para codificación de .txt y demás...

Seguro que es una tontería y tiene que haber una forma de que tome del texto las lineas y las ponga en pantalla con la codificación adecuada. De hecho, me suena que vi un ejemplo o un juego que incluía el source y sacaba parte de sus textos de archivos como trato de hacer yo y los mostraba bien en pantalla...

HELP ME!!  ;D



Drumpi

Después de pelearme más de media hora para que me funcione VirtualBox (con la actualización de Kubuntu, la ruta de montaje de las particiones ha cambiado y no me dejaba registrar n disco duro ya existente...) he podido ejectar tanto Fenix como Bennu y... efectivamente, no aparece aquella variable. ira que me suena que existía pero... No sé, supongo que write si te irá bien ¿no? Intenta probar con una FNT con el  valor de charset correcto, a ver si por casualidad se arregla... Y comprueba que el FNT contiene dichos caracteres y que están donde se corresponden, a ver si va a ser problema de la fuente.
Es que me suena que eso, que con los ficheros de texto daba problemas al leer, pero no al hacer write... o al revés. Tengo que mirar cómo lo solucioné yo porque en mi editor de mapas uso ficheros para todos los textos de pantalla.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

warrior_rockk

Quote from: Drumpi on June 20, 2017, 12:15:11 AM
Después de pelearme más de media hora para que me funcione VirtualBox (con la actualización de Kubuntu, la ruta de montaje de las particiones ha cambiado y no me dejaba registrar n disco duro ya existente...)


Desde línea de comandos usando el vboxmanage.exe puedes cambiar el UUID de un disco duro o clonarlo para poder registrarlo aunque exista. (por si te sirve de utilidad..) ;)

Drumpi

Ha sido más fácil editar el VirtualBox.xml y el fichero .vbox en modo administrador que eso, porque encima tenía problemas de permisos con otros ficheros. Pero me lo apunto para la próxima ;)
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

darío

BennuGD soporta dos tipos de código de página para las fuentes: CP-850 y ISO-8859-1. Una fuente en BennuGD no viene a ser más que una asociación entre un número y un glyph con ciertas propiedades para saber cómo posicionarlo.

Para saber lo que está pasando tienes que preguntarte:
- En qué codificación tengo mi archivo de texto?
- Cómo ha sido creada la fuente?

Muy probablemente tu archivo de texto está guardado en ISO-8859-1 o UTF-8 donde la ñ corresponde con el código 0xF1.

La fuente del sistema en BennuGD sea muy probablemente CP-850. En esta codificación, el código 0xF1 se corresponde con el +/- que estas viendo.

El hecho de que veas el +/- significa que en la fuente del sistema el glyph asociado al número 0xF1 (241 en decimal) es un +/-.

Cómo lo solucionas?

Dos opciones:

       
  • En lugar de usar una fuente del sistema, utiliza una fuente como las generadas con FntEditor que creo que utilizan el flag de ISO-88591-1.
  • Codifica tu archivo con CP-850. Seguramente Notepad++ te permite hacerlo de alguna forma.
My sites:
Smart Fpg Editor - Painless FPG Edition for Bennu and PixTudio
fenixlib - .NET support for manipulating PixTudio, Bennu and Div graphic formats

Ryo Suzuki

Muchas gracias a los dos.

En todo caso, he probado normal como os he dicho con la fuente por defecto de BennuGD y luego con la fuente que voy a usar del "mod_ttf" y en ambos casos obtengo los mismos resultados negativos que os puse en la captura.

Voy a probar lo de tratar de salvar como CP-850 porque lo del FntEditor no lo quiero usar porque el juego está avanzado usando ttf (de hecho hicimos el port a Dreamcast de ese mod y funciona de perlas)

Os cuento en breve...

Drumpi

En realidad no hay tanta diferencia entre usar TTF y FNT... a menos que la estés cargando con distintos tamaños.
Al final, en ambos casos, las letras terminan convertidas en MAP en memoria, y son tratadas como cualquier FPG (con algunas diferencias, como que cada letra tiene un valor de separación con la siguiente, o que se pueden manejar en grupos y sin necesidad de un proceso). La única pega que tengo es que aun no he encontrado una herramienta de fuentes de 1 bit 100% fiable (y entiendo la dificultad que tiene ^^U).

Pero ya son los gustos y manías de cada uno :D
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Ryo Suzuki

Muchas gracias darío! Ha funcionado como la seda, es muy sencillo con el Notepad ++ guardar el documento con CP-850 y entonces sí que muestra bien los carácteres.

Y amigo Drumpi, interesante la info como siempre, no lo sabía.

Yo estoy usando ttf porque me es mucho más comodo para cambiar de tamaños y de colores, simplemente por eso. Me ha acostumbrado ya y las fuentes que estoy usando son public domain.

Ahora mis problemas con el texto son otros... :P