Only in ./: diff
diff -ur ../bitlbee-1.0.3-original/irc.c ./irc.c
--- ../bitlbee-1.0.3-original/irc.c	2006-08-22 23:04:26.000000000 +0300
+++ ./irc.c	2006-08-22 22:58:05.000000000 +0300
@@ -116,6 +116,7 @@
 	set_add( irc, "buddy_sendbuffer", "false", set_eval_bool );
 	set_add( irc, "buddy_sendbuffer_delay", "200", set_eval_int );
 	set_add( irc, "charset", "iso8859-1", set_eval_charset );
+	set_add( irc, "oscar_recode_charset", "iso8859-1", set_eval_oscar_recode_charset );
 	set_add( irc, "debug", "false", set_eval_bool );
 	set_add( irc, "default_target", "root", NULL );
 	set_add( irc, "display_namechanges", "false", set_eval_bool );
diff -ur ../bitlbee-1.0.3-original/protocols/oscar/oscar.c ./protocols/oscar/oscar.c
--- ../bitlbee-1.0.3-original/protocols/oscar/oscar.c	2006-08-22 23:04:26.000000000 +0300
+++ ./protocols/oscar/oscar.c	2006-08-22 23:16:50.000000000 +0300
@@ -1029,6 +1029,8 @@
 	return 1;
 }
 
+extern GSList *irc_connection_list;
+
 static int incomingim_chan1(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch1_args *args) {
 	char *tmp = g_malloc(BUF_LONG + 1);
 	struct gaim_connection *gc = sess->aux_data;
@@ -1043,7 +1045,14 @@
 		if (args->icbmflags & AIM_IMFLAGS_UNICODE)
 			src = "UNICODEBIG";
 		else
-			src = "ISO8859-1";
+		{
+			char *cs;
+			irc_t *irc = (irc_t*)irc_connection_list->data;
+			if( ( cs = set_getstr( irc, "oscar_recode_charset" ) ) && ( g_strcasecmp( cs, "utf-8" ) != 0 ) )
+				src = cs;
+			else
+				src = "iso88590-1";
+		}
 		
 		/* Try to use iconv first to convert the message to UTF8 - which is what BitlBee expects */
 		if (do_iconv(src, "UTF-8", args->msg, tmp, args->msglen, BUF_LONG) >= 0) {
diff -ur ../bitlbee-1.0.3-original/util.c ./util.c
--- ../bitlbee-1.0.3-original/util.c	2006-08-22 23:04:26.000000000 +0300
+++ ./util.c	2006-08-22 22:59:14.000000000 +0300
@@ -453,3 +453,18 @@
 	iconv_close( cd );
 	return( value );
 }
+
+char *set_eval_oscar_recode_charset( irc_t *irc, set_t *set, char *value )
+{
+	iconv_t cd;
+
+	if ( g_strncasecmp( value, "none", 4 ) == 0 )
+		return( value );
+
+	cd = iconv_open( "UTF-8", value );
+	if( cd == (iconv_t) -1 )
+		return( NULL );
+
+	iconv_close( cd );
+	return( value );
+}
diff -ur ../bitlbee-1.0.3-original/util.h ./util.h
--- ../bitlbee-1.0.3-original/util.h	2006-08-22 23:04:26.000000000 +0300
+++ ./util.h	2006-08-22 22:58:35.000000000 +0300
@@ -46,5 +46,6 @@
 
 G_MODULE_EXPORT signed int do_iconv( char *from_cs, char *to_cs, char *src, char *dst, size_t size, size_t maxbuf );
 char *set_eval_charset( irc_t *irc, set_t *set, char *value );
+char *set_eval_oscar_recode_charset( irc_t *irc, set_t *set, char *value );
 
 #endif
