Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


[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.
 
Toute l'actualité de mes scripts ici     (dernière mise à jour le 22/04/2020)

Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
#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
 
Toute l'actualité de mes scripts ici     (dernière mise à jour le 22/04/2020)

Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
#3
Est-ce que c'est sur toutes les versions ? Pourrais-tu préciser ta version ?
Retrouvez les dernières versions de mes scripts TCL et bien plus sur ma page GitHub Cool
#4
 
(22/03/2014, 01:20)MenzAgitat Wrote: Le problème a été constaté sur les versions 1.6.21 et 1.8 d'Eggdrop.
 
Toute l'actualité de mes scripts ici     (dernière mise à jour le 22/04/2020)

Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
#5
(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
Retrouvez les dernières versions de mes scripts TCL et bien plus sur ma page GitHub Cool
#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
#                  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.
#
################################################## #####
Retrouvez les dernières versions de mes scripts TCL et bien plus sur ma page GitHub Cool
#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

Toute l'actualité de mes scripts ici     (dernière mise à jour le 22/04/2020)

Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.


Possibly Related Threads…
Thread Author Replies Views Last Post
  Problème d'encodage charset suite à changement de version exactkayak 3 2,566 06/02/2020, 00:35
Last Post: exactkayak
  [Résolu] Problème d'encodage avec rss-synd Naruto 24 13,628 18/05/2014, 21:16
Last Post: CrazyCat
  probleme avec regsub Nostromo1st 2 4,460 03/06/2013, 10:30
Last Post: Nostromo1st
  regsub ? Supa 2 3,570 02/10/2012, 13:29
Last Post: Supa
  Afficher des caractères Japonais NimaG` 2 3,683 19/07/2009, 18:50
Last Post: CrazyCat

Forum Jump:


Users browsing this thread: 1 Guest(s)