diff -ur gaim-1.1.4/src/protocols/oscar/oscar.c ../gaim-1.1.4-mod/build-tree/gaim-1.1.4/src/protocols/oscar/oscar.c --- gaim-1.1.4/src/protocols/oscar/oscar.c 2005-02-16 22:26:57.000000000 +0200 +++ ../gaim-1.1.4-mod/build-tree/gaim-1.1.4/src/protocols/oscar/oscar.c 2005-03-01 12:42:03.000000000 +0200 @@ -56,7 +56,7 @@ #define AIMHASHDATA "http://gaim.sourceforge.net/aim_data.php3" #define OSCAR_CONNECT_STEPS 6 -#define OSCAR_DEFAULT_CUSTOM_ENCODING "ISO-8859-1" +#define OSCAR_DEFAULT_CUSTOM_ENCODING "CP1251" static int caps_aim = AIM_CAPS_CHAT | AIM_CAPS_BUDDYICON | AIM_CAPS_DIRECTIM | AIM_CAPS_SENDFILE | AIM_CAPS_INTEROPERATE | AIM_CAPS_ICHAT; static int caps_icq = AIM_CAPS_BUDDYICON | AIM_CAPS_DIRECTIM | AIM_CAPS_SENDFILE | AIM_CAPS_ICQUTF8 | AIM_CAPS_INTEROPERATE | AIM_CAPS_ICHAT; @@ -417,7 +417,7 @@ if ((charsetstr == NULL) || (*charsetstr == '\0')) return NULL; - if (strcasecmp("UTF-8", charsetstr)) { + if ( (isUTF8(data,datalen)==0) && strcasecmp("UTF-8", charsetstr)) { if (fallback) ret = g_convert_with_fallback(data, datalen, "UTF-8", charsetstr, "?", NULL, NULL, &err); else @@ -431,7 +431,10 @@ if (g_utf8_validate(data, datalen, NULL)) ret = g_strndup(data, datalen); else + { gaim_debug_warning("oscar", "String is not valid UTF-8.\n"); + ret = g_strndup(data, datalen); + } } return ret; @@ -568,6 +571,49 @@ return; } + +int isUTF8(char *str, size_t len) +{ + size_t i=0,tomatch; + + while (i