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.
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
Est-ce que c'est sur toutes les versions ? Pourrais-tu préciser ta version ?
(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
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.
#
################################################## #####
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