Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Posible Bug En Left() Con Acentos [Solucionado]
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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?
 



 
última edición por BrunoIV el Miercoles, 12 Septiembre 2012, 21:49; editado 1 vez 
 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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!
 



 
sebikul - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.  

 



 
última edición por sebikul el Miercoles, 12 Septiembre 2012, 21:37; editado 1 vez 
sebikul - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 



 
última edición por BrunoIV el Miercoles, 12 Septiembre 2012, 21:59; editado 1 vez 
 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Problema De Acentos Y Ñ (SOLUCIONADO) Pablo-GNU General 15 Sabado, 27 Agosto 2011, 14:50 Ver último mensaje
arubioc
No hay nuevos mensajes Al Final, Creo Que No Es Posible (¡Sí Er... shordi General 15 Sabado, 31 Octobre 2015, 20:30 Ver último mensaje
shordi
No hay nuevos mensajes Problemas Con Acentos Y Diéresis jsbsan General 12 Lunes, 12 Junio 2017, 09:06 Ver último mensaje
tincho
No hay nuevos mensajes Quitando Acentos Con RemoveDiacritics tincho Aplicaciones/Fragmentos de Código 2 Lunes, 02 Diciembre 2019, 13:30 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron