Open irssibot opened 18 years ago
It should be fixed in irssi-0.8.12, can you confirm it?
Hello :) I'm Park, Jin Hyung from Korea. in 0.8.12, this bug is not fixed.
SO, I have made some patch for this bug! please test!
My setting: "/set recoded" output: 11:44 [misc] 11:44 recode_autodetect_utf8 = OFF 11:44 recode_fallback = utf8 11:44 recode = ON 11:44 recode_out_default_charset = cp949 11:44 recode_transliterate = ON
"/join #테스트채널" outout: 11:48 -!- channels : #테스트채널
recoded_channel.patch
diff -urN irssi-0.8.12/src/core/chat-commands.c irssi-0.8.12_patch/src/core/chat-commands.c
--- irssi-0.8.12/src/core/chat-commands.c 2007-10-06 18:38:20.000000000 +0900
+++ irssi-0.8.12_patch/src/core/chat-commands.c 2008-09-25 11:37:32.000000000 +0900
@@ -350,7 +350,7 @@
static void cmd_msg(const char *data, SERVER_REC *server, WI_ITEM_REC *item)
{
GHashTable *optlist;
- char *target, *origtarget, *msg, *recoded;
+ char *target, *origtarget, *msg, *recoded, *recoded_target;
void *free_arg;
int free_ret, target_type = SEND_TARGET_NICK;
@@ -403,8 +403,9 @@
}
}
recoded = recode_out(server, msg, target);
+ recoded_target = recode_out(server, target, target);
if (target != NULL) {
- signal_emit("server sendmsg", 4, server, target, recoded,
+ signal_emit("server sendmsg", 4, server, recoded_target, recoded,
GINT_TO_POINTER(target_type));
}
signal_emit(target != NULL && target_type == SEND_TARGET_CHANNEL ?
@@ -412,6 +413,7 @@
server, recoded, target, origtarget);
g_free(recoded);
+ g_free(recoded_target);
if (free_ret && target != NULL) g_free(target);
cmd_params_free(free_arg);
}
diff -urN irssi-0.8.12/src/irc/core/irc-channels.c irssi-0.8.12_patch/src/irc/core/irc-channels.c
--- irssi-0.8.12/src/irc/core/irc-channels.c 2007-10-06 18:38:20.000000000 +0900
+++ irssi-0.8.12_patch/src/irc/core/irc-channels.c 2008-09-25 11:38:03.000000000 +0900
@@ -71,6 +71,7 @@
GString *outchans, *outkeys;
char *channels, *keys, *key, *space;
char **chanlist, **keylist, **tmp, **tmpkey, **tmpstr, *channel, *channame;
+ char *recoded_str;
void *free_arg;
int use_keys, cmdlen;
@@ -148,9 +149,11 @@
if (outchans->len > 0) {
g_string_truncate(outchans, outchans->len-1);
g_string_truncate(outkeys, outkeys->len-1);
- irc_send_cmdv(IRC_SERVER(server),
+ recoded_str = recode_out(server, outchans->str, NULL);
+ irc_send_cmdv(IRC_SERVER(server),
use_keys ? "JOIN %s %s" : "JOIN %s",
- outchans->str, outkeys->str);
+ recoded_str, outkeys->str);
+ g_free(recoded_str);
}
cmdlen = 0;
g_string_truncate(outchans,0);
oops. sorry. above comment is for #345. sorry for miss posting.
Description: Channels in 'whois; doesnt recoded. Just showing as raw ascii.
Steps to reproduce:
Results: channels : #^[$B%m%7%"^[(B
Expected results: channels : #ロシア
Additional information: Default locale: en_US.UTF-8 Server encoding: ISO2022JP irssi version: irssi 0.8.10-rc7 (20051123 1830)
"recode" output: Target Character set something ISO2022JP
"/set recode" output: recode_autodetect_utf8 = OFF recode_fallback = CP1251 recode = ON recode_out_default_charset = recode_transliterate = OFF