Communauté sur les Eggdrops - Community about Eggdrops
[Bug] comment regsub altère l'encodage d'une chaîne de caractères - Printable Version

+- Communauté sur les Eggdrops - Community about Eggdrops (https://forum.eggdrop.fr)
+-- Forum: Eggdrop et TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=8)
+--- Forum: Scripts TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=4)
+--- Thread: [Bug] comment regsub altère l'encodage d'une chaîne de caractères (/showthread.php?tid=1512)



comment regsub altère l'encodage d'une chaîne de caractères - MenzAgitat - 22/03/2014

 
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.
 


RE: comment regsub altère l'encodage d'une chaîne de caractères - MenzAgitat - 02/02/2015

 
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
 


RE: comment regsub altère l'encodage d'une chaîne de caractères - ZarTek - 15/02/2015

Est-ce que c'est sur toutes les versions ? Pourrais-tu préciser ta version ?


RE: comment regsub altère l'encodage d'une chaîne de caractères - MenzAgitat - 15/02/2015

 
(22/03/2014, 01:20)MenzAgitat Wrote: Le problème a été constaté sur les versions 1.6.21 et 1.8 d'Eggdrop.
 


RE: comment regsub altère l'encodage d'une chaîne de caractères - ZarTek - 15/02/2015

(15/02/2015, 16:35)MenzAgitat Wrote:  
(22/03/2014, 01:20)MenzAgitat Wrote: 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


RE: comment regsub altère l'encodage d'une chaîne de caractères - ZarTek - 27/02/2015

http://scripts.eggdrop.fr/details-Regsub.Fix.UTF8-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
#                  ZarTek <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.
#
################################################## #####


RE: comment regsub altère l'encodage d'une chaîne de caractères - MenzAgitat - 27/02/2017

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