Posible Bug En Left() Con Acentos [Solucionado]


BrunoIV
Subject: Posible Bug En Left() Con Acentos [Solucionado]
Creo que he encontrado un bug en gambas 3.2

Print SConv(Left("Miércoles", 3)) 'Mi?
Print SConv(Left("Miércoles", 4)) 'Mié


¿Alguien me lo puede confirmar y quizás reportar?

Last edited by BrunoIV on Wednesday, 12 September 2012, 21:49; edited 1 time in total
Subject: Re: Posible Bug En Left() Con Acentos
No es un bug, es normal lo que te ocurre.

La forma correcta es usando la clase String:

Print String.Left("Miércoles", 3) 'Mié


La función Sconv se usa para otra cosa:

Citar:
Convierte una cadena desde Desktop.Charset, que debe ser UTF-8, a System.Charset.


Saludos

Profile PM  
Subject: Re: Posible Bug En Left() Con Acentos
No es un bug sino un error en la codificacion de la cadena.

Ejecuta lo siguiente en una terminal:

gbx3 -e "SConv(Left(\"Miércoles\", 4))"

Si todavia tienes errores en la codificacion, esto es porque el System.Charset no soporta acentos, en ese caso deberias usar:

gbx3 -e "Left(\"Miércoles\", 4)"

De forma alternativa puedes usar Conv$() para cambiar la codificacion de una cadena.

Si lo ejecutas desde la IDE probablemente ocurran errores de codificacion, eso es porque la terminal virtual no usa UTF-8 sino ASCII

Espero que la info te sirva, saludos!

Profile PM  
Subject: Re: Posible Bug En Left() Con Acentos
Sabes que tienes razon??

ES en realidad un bug, ya que los caracteres con acentos ocupan 2 bytes, y la función Left() lo cuenta como 2 caracteres en lugar de 1.

Fácil de comprobar:

Código: [Descargar] [Ocultar]
  1. gbx3 -e "Len(\"áá\")"  
  2. 4  
  3.  


Cuando deberían ser 2. Deberias reportarlo!

Edit:

Aún mas raro...

Código: [Descargar] [Ocultar]
  1. gbx3 -e "Len(\"ṕ\")"  
  2. 3  
  3.  

Last edited by sebikul on Wednesday, 12 September 2012, 21:37; edited 1 time in total
Profile PM  
BrunoIV
Subject: Re: Posible Bug En Left() Con Acentos
Gracias jguardon, no sabia que la forma correcta fuera String.left(). Lo de usar Sconv era para asegurarme de que no fuera algún problema con mi codificación (al principio no lo tenia).

Sebikul:
Acabo de ver que jguardon tiene toda la razón, tanto las funciones Len, Left y otras tienen este mensaje:
Citar:

This function only deal with ASCII strings. To manipulate UTF-8 strings, use the String class.


String.len("á") '1


Un abruzo

Last edited by BrunoIV on Wednesday, 12 September 2012, 21:59; edited 1 time in total

Page 1 of 1


  
You cannot post new topics
You cannot reply to topics
You cannot edit your posts
You cannot delete your posts
You cannot vote in polls
You cannot attach files
You can download files
You cannot post calendar events

   

This is a "Lo-Fi" version of our main content. To view the full version with more information, formatting and images, please click here.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Generation Time: 0.1085s (PHP: -42% SQL: 142%)
SQL queries: 25 - Debug Off - GZIP Enabled