[Bug] comment regsub altère l'encodage d'une chaîne de caractères
#1
 
Il semblerait qu'un regsub sur un chaîne de caractères altère le charset de celle-ci.

Le problème a été constaté sur les versions 1.6.21 et 1.8 d'Eggdrop.

Démonstration :

test n°1

TCL
proc ::testproc {} {
	set testvar  "test n°1"
	putlog "---> [encoding convertto identity $testvar]"
}



effet en partyline :
Code :
[00:12:55] ---> test n°1


------------------------------------------------------------------


test n°2

TCL
proc ::testproc {} {
	set testvar  "test n°2"
	regsub {test} $testvar "truc" testvar
	putlog "---> [encoding convertto identity $testvar]"
}



effet en partyline :
Code :
[00:13:02] ---> truc nï¾°2


------------------------------------------------------------------


Contournement du problème :

Utiliser la commande encoding avant tout regsub dans le code.
 
Répondre Avertir
#2
 
autre solution toute moche mais fonctionnelle :

TCL
proc ::testproc {} {
  set testvar "test n°1"
  set testvar [encoding convertto utf-8 $testvar]
  regsub {test} $testvar "truc" testvar
  set testvar [encoding convertfrom utf-8 $testvar]
  putlog "---> [encoding convertto identity $testvar]"
}



effet en partyline :
Code :
[17:59:18] ---> truc n°1
 
Répondre Avertir
#3
Est-ce que c'est sur toutes les versions ? Pourrais-tu préciser ta version ?
Répondre Avertir
#4
 
(22/03/2014, 01:20)MenzAgitat a écrit : Le problème a été constaté sur les versions 1.6.21 et 1.8 d'Eggdrop.
 
Répondre Avertir
#5
(15/02/2015, 16:35)MenzAgitat a écrit :  
(22/03/2014, 01:20)MenzAgitat a écrit : Le problème a été constaté sur les versions 1.6.21 et 1.8 d'Eggdrop.
 

Je parle de ta version TCL la version eggdrop ne doit pas influencer sur cette aspect.
D'ailleurs, je voulais voir comment a été construit regsub dans le TCL afin de comprendre d'ou sa venez.
Afin d’éventuellement signaler le bug
Répondre Avertir
#6
http://scripts.eggdrop.fr/details-Regsub...-s215.html

################################################## #####
#
# Regsub.Fix.UTF8.tcl - Force le UTF-8 pour regsub
#
################################################## #####
#
# Problème signalé par MenzAgitat sur www.eggdrop.fr
# Lien du problème : http://goo.gl/atwJEB
#
# Problème : Le regsub désaltère l'encodage d'une chaine
#            de caractère.
#
# Solution : Forcer l'encodage a UTF8, merci MenzAgitat.
#
#
# Lien du manuel regsub : http://goo.gl/MV8Prw
#
#
# version: 1.0.270215 écrite par
#                  McDeffice <Deffice [ @t ] GMail.Com>
#
# Nécessite:
#  - eggdrop (windrop) 1.6.x or 1.8.x
#
# Installation:
#  Ajouter dans votre fichier de configuration après
#  chaque "loadmodule" et chaque scripts
#  et faire un rehash:
#
#    source scripts/Regsub.Fix.UTF8.tcl
#
################################################## #####
#
# Remerciements :
# À la Communauté www.eggdrop.fr,
# Coralie Turcotte,
# Tonton CrazyCat,
# MenzAgitat.
#
################################################## #####
Répondre Avertir
#7
Petite remarque : effectuer un aller-retour d'encodage en utf-8 avant d'effectuer des regexp / regsub permet également de contourner le problème :
TCL
set text [encoding convertto utf-8 [encoding convertfrom utf-8 $text]]
regsub {foo} $text "bar" text


Répondre Avertir


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté