__module_name__ = "utf8decoder" __module_version__ = "1.0" __module_description__ = "Decodes UTF8 sent by other people into iso-8859-1" __module_author__ = "Gustavo Niemeyer " import xchat def decode(word, word_eol, userdata): event, pos = userdata if type(pos) is int: pos = (pos,) changed = False for i in pos: try: reencoded = word[i].decode('utf8').encode('iso-8859-1') except (UnicodeError, IndexError): continue if reencoded != word[i]: word[i] = reencoded changed = True if changed: xchat.emit_print(event, *word) return xchat.EAT_XCHAT else: return xchat.EAT_NONE EVENTS = [ ("Channel Action", 1), ("Channel Action Hilight", 1), ("Channel Message", 1), ("Channel Msg Hilight", 1), ("Channel Notice", 2), ("Generic Message", (0, 1)), ("Kick", 3), ("Killed", 1), ("Motd", 0), ("Notice", 1), ("Part with Reason", 3), ("Private Message", 1), ("Private Message to Dialog", 1), ("Quit", 1), ("Receive Wallops", 1), ("Server Notice", 0), ("Server Text", 0), ("Topic", 1), ("Topic Change", 1), ] for event in EVENTS: xchat.hook_print(event[0], decode, event) print "Plugin utf8decoder loaded!" # vim:ts=4:sw=4:et