Tildes: La codificación definitiva para BennuGD/PixTudio-> Windows-1252 y CP 850

Started by panreyes, November 16, 2017, 02:56:40 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

panreyes

No sé cuánto tiempo llevo peleándome con las codificaciones, pero hasta día de hoy no me había puesto a intentar resolverlo.

La solución es muy simple:
- Para el código fuente utilizad la codificación Windows-1252
- Para archivos con fopen y demás: CP 850

Aquí os dejo un código para que lo comprobéis por vosotros mismos. Recordad guardar el PRG en formato ANSI o CP850.

import "mod_file";
import "mod_key";
import "mod_text";
import "mod_say";

Private
int fp;
string tildes="áéíóúñ¡";
Begin
write(0,0,0,0,"PRG: "+tildes);
say("PRG: "+tildes);

fp=fopen("lee_tildes.txt",o_write);
fputs(fp,tildes);
fclose(fp);

fp=fopen("lee_tildes.txt",o_read);
tildes=fgets(fp);
fclose(fp);
write(0,0,20,0,"FGETS: "+tildes);
say("FGETS: "+tildes);

while(!key(_esc)) frame; end
End


Pd: Los ASCII en decimal de los diferentes caracteres son los siguientes:
Quoteá = 160
é = 130
í = 161
ó = 162
ú = 163
¡ = 173
¿ = 168
Á = 181
É = 144
Í = 214
Ó = 224
Ú = 233

El único problema que queda pendiente son las funciones de ucase y lcase: No funcionan correctamente con los caracteres especiales. Yo he hecho mi versión para ucase:

Function string my_ucase(string texto);
Private
string texto2;
Begin
from x=0 to len(texto);
y=asc(texto[x]);
if(y>96 and y<123) //letras estándar
y-=32;
end
if(y==160) y=181; end //á
if(y==130) y=144; end //é
if(y==161) y=214; end //í
if(y==162) y=224; end //ó
if(y==163) y=233; end //ú
texto2+=chr(y);
end
return texto2;
End

JaViS

Working on Anarkade. A couch multiplayer 2D shooter.

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Ryo Suzuki