utf-8 desteği ne sadece script üzerinden çözülebilir nede sadece bot üzerinde ,her ikisininde buna göre yapılandırılmış olması gerekiyor.
sorun sadece o ilk satırda "baslik"'ta ise :
Kod: Kodu kopyalamak için üzerine çift tıklayın!
set baslik [string map -nocase {
"ı" "i" "ş" "ş" "ü" "u" "ı" "i" "I" "i" "Ü" "u" "ö" "o" "Ö"
"o" "ş" "s" "ç" "c" "Ş" "S" "Ç" "C" "ğ" "g" "Ğ" "G" "ğ" \u011f} $baslik]
bu satırları silip deneyin birde.
her kullanıcı kullansın deniyorsa o ayarı ya "-" yada "-|-" hatta "*" olarak da ayarlanırsa tüm kullanıcılar kullanabilir.
( uyarmadı demeyin : ben bunu hiç tavsiye etmiyorum. nedeni, pek çok rüya yorumu oldukça uzun. bota/kanala flood edilmesinin önünü açmış oluyorsunuz. bot flood'dan sunucudan düşebilir.* )
bende işleyen 3 botda 1.8 cvs sürümü.
1.8'ler 1.6.x'lerdan farklı olarak kendiliğinden utf-8 patch'li- destekliler.
kaldı ki burada
forumda gözlemlediğim kadarıyla bizim kullanıcılarda eskiye rağbet var...
yeni sürümler dururken 6-7 sene evvelki hatta daha eski sürümleri kurmaya/kullanmaya daha meilliler...
pekçok kez,farklı konular altında izah etmeye çalıştım.zaten başka da silah zoruyla yaptıracak/kullandıracak halim de yok.
Heartbroken'da zamanında Türkçe' ye çevirip anlatmış burada bir konu altında botun nasıl utf-8 patch edildiğini:
orjinali budur ->
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
heartbroken'ın anlatımı ->
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
bot 1.6.19 ise :
Kod: Kodu kopyalamak için üzerine çift tıklayın!
diff -urN eggdrop1.6.19.original/src/chanprog.c eggdrop1.6.19.modified/src/chanprog.c
--- eggdrop1.6.19.original/src/chanprog.c 2008-02-16 22:41:03.000000000 +0100
+++ eggdrop1.6.19.modified/src/chanprog.c 2010-06-21 14:24:27.000000000 +0200
@@ -444,7 +444,7 @@
protect_readonly = 0;
/* Now read it */
- if (!readtclprog(configfile))
+ if (!readtclprog(configfile, 0))
fatal(MISC_NOCONFIGFILE, 0);
for (i = 0; i < max_logs; i++) {
diff -urN eggdrop1.6.19.original/src/mod/channels.mod/channels.c eggdrop1.6.19.modified/src/mod/channels.mod/channels.c
--- eggdrop1.6.19.original/src/mod/channels.mod/channels.c 2008-02-16 22:41:06.000000000 +0100
+++ eggdrop1.6.19.modified/src/mod/channels.mod/channels.c 2010-06-21 14:24:27.000000000 +0200
@@ -498,7 +498,7 @@
if (!channel_static(chan))
chan->status |= CHAN_FLAGGED;
chan_hack = 1;
- if (!readtclprog(chanfile) && create) {
+ if (!readtclprog(chanfile, 1) && create) {
FILE *f;
/* Assume file isnt there & therfore make it */
diff -urN eggdrop1.6.19.original/src/mod/module.h eggdrop1.6.19.modified/src/mod/module.h
--- eggdrop1.6.19.original/src/mod/module.h 2008-02-16 22:41:06.000000000 +0100
+++ eggdrop1.6.19.modified/src/mod/module.h 2010-06-21 14:29:54.000000000 +0200
@@ -282,7 +282,7 @@
#define copyfile ((int (*) (char *, char *))global[147])
/* 148 - 151 */
#define do_tcl ((void (*)(char *, char *))global[148])
-#define readtclprog ((int (*)(const char *))global[149])
+#define readtclprog ((int (*)(const char *, int))global[149])
#define get_language ((char *(*)(int))global[150])
#define def_get ((void *(*)(struct userrec *, struct user_entry *))global[151])
/* 152 - 155 */
diff -urN eggdrop1.6.19.original/src/proto.h eggdrop1.6.19.modified/src/proto.h
--- eggdrop1.6.19.original/src/proto.h 2008-02-16 22:41:04.000000000 +0100
+++ eggdrop1.6.19.modified/src/proto.h 2010-06-21 14:30:06.000000000 +0200
@@ -270,7 +270,7 @@
void protect_tcl();
void unprotect_tcl();
void do_tcl(char *, char *);
-int readtclprog(char *fname);
+int readtclprog(char *fname, int);
/* userent.c */
void list_type_kill(struct list_type *);
diff -urN eggdrop1.6.19.original/src/tcl.c eggdrop1.6.19.modified/src/tcl.c
--- eggdrop1.6.19.original/src/tcl.c 2008-02-16 22:41:04.000000000 +0100
+++ eggdrop1.6.19.modified/src/tcl.c 2010-06-21 14:26:57.000000000 +0200
@@ -725,21 +725,34 @@
*
* returns: 1 - if everything was okay
*/
-int readtclprog(char *fname)
+int readtclprog(char *fname, int noencoding)
{
int code;
char *result;
#ifdef USE_TCL_ENCODING
+ char *encoding = NULL;
Tcl_DString dstr;
#endif
if (!file_readable(fname))
return 0;
+#ifdef USE_TCL_ENCODING
+ if (noencoding && Tcl_Eval(interp, "encoding system") == TCL_OK) {
+ encoding = nmalloc(strlen(interp->result)+1);
+ strcpy(encoding, interp->result);
+ Tcl_SetSystemEncoding(interp, "identity");
+ }
+#endif
+
code = Tcl_EvalFile(interp, fname);
result = Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY);
#ifdef USE_TCL_ENCODING
+ if (noencoding && encoding) {
+ Tcl_SetSystemEncoding(interp, encoding);
+ nfree(encoding);
+ }
/* properly convert string to system encoding. */
Tcl_DStringInit(&dstr);
Tcl_UtfToExternalDString(NULL, result, -1, &dstr);
bunu kaydedin. blabla.patch gibi botun ana dizinine gönderip bot ana dizinindeyken (botun kurulum klasöründe olacak,kurulmuş botta değil.patch işlemi yeniden kurulum/derleme gerektirir.)
patch -p1 < blabla.patch komutu uygulayıp kurulumu normal şekilde gerçekleştirin.(bot sürümü 1.6.19 ise*)
tüm 1.6.x sürümleri yukarda heartbroken'ın anlattığı utf-8 patch işlemini uygulayarak yeniden botlarını kurmalı/derlemelidir. 1.8 sürümü için tek yapılacak işlem .conf dosyasına tercihen yukarılarda bir yere "encoding system utf-8" satırı eklemek..