# ISO2UTF - replacing ISO-8859-8 (hebrew) to UTF # Thanks to Michael Kowalchuk's Incoming word filter # Which is where I learned the XCHAT interface from. # # TAsn # March 20, 2007 # # translates incoming ISO-8859-8 text (hebrew) to UTF-8 # USAGE: #Just Load The Script # # Register the script with X-Chat 2 Xchat::register( "ISO2UTF", "0.1", "", "" ); IRC::add_command_handler("iso2utf","iso2utf"); IRC::add_command_handler("i2ucharset","setcharset"); # Add message handler for PRIVMSGs Xchat::hook_print("Channel Message", "replace", { data => ['Channel Message'] } ); Xchat::hook_print("Private Message", "replace", { data => ['Private Message'] }); Xchat::hook_print("Private Message to Dialog", "replace", { data => ['Private Message to Dialog'] } ); $target_charset="iso-8859-8"; #default charset # Replace - Just replaces $target_charset to UTF-8 sub replace { #$_[0] - array reference containing the values for the text event see Settings->Lists->Text Events #$_[1] - the data that was passed to the hook function ( $nick, $message, $mode, $extra ) = @{ $_[0] }; $data = $_[1][0]; #require Encode; #$message = Encode::decode_utf8($message); #$message = Encode::decode($target_charset,$message); #$message = Encode::encode_utf8($message); $message =~ s/\x{c3}\x{a0}/\x{d7}\x{90}/g; $message =~ s/\x{c3}\x{a1}/\x{d7}\x{91}/g; $message =~ s/\x{c3}\x{a2}/\x{d7}\x{92}/g; $message =~ s/\x{c3}\x{a3}/\x{d7}\x{93}/g; $message =~ s/\x{c3}\x{a4}/\x{d7}\x{94}/g; $message =~ s/\x{c3}\x{a5}/\x{d7}\x{95}/g; $message =~ s/\x{c3}\x{a6}/\x{d7}\x{96}/g; $message =~ s/\x{c3}\x{a7}/\x{d7}\x{97}/g; $message =~ s/\x{c3}\x{a8}/\x{d7}\x{98}/g; $message =~ s/\x{c3}\x{a9}/\x{d7}\x{99}/g; $message =~ s/\x{c3}\x{aa}/\x{d7}\x{9a}/g; $message =~ s/\x{c3}\x{ab}/\x{d7}\x{9b}/g; $message =~ s/\x{c3}\x{ac}/\x{d7}\x{9c}/g; $message =~ s/\x{c3}\x{ad}/\x{d7}\x{9d}/g; $message =~ s/\x{c3}\x{ae}/\x{d7}\x{9e}/g; $message =~ s/\x{c3}\x{af}/\x{d7}\x{9f}/g; $message =~ s/\x{c3}\x{b0}/\x{d7}\x{a0}/g; $message =~ s/\x{c3}\x{b1}/\x{d7}\x{a1}/g; $message =~ s/\x{c3}\x{b2}/\x{d7}\x{a2}/g; $message =~ s/\x{c3}\x{b3}/\x{d7}\x{a3}/g; $message =~ s/\x{c3}\x{b4}/\x{d7}\x{a4}/g; $message =~ s/\x{c3}\x{b5}/\x{d7}\x{a5}/g; $message =~ s/\x{c3}\x{b6}/\x{d7}\x{a6}/g; $message =~ s/\x{c3}\x{b7}/\x{d7}\x{a7}/g; $message =~ s/\x{c3}\x{b8}/\x{d7}\x{a8}/g; $message =~ s/\x{c3}\x{b9}/\x{d7}\x{a9}/g; $message =~ s/\x{c3}\x{ba}/\x{d7}\x{aa}/g; Xchat::emit_print( $data, ($nick,$message,$mode,$extra) ); return Xchat::EAT_ALL; } sub setcharset { $target_charset= $_[0]; Xchat::print("Charset changed to $target_charset"); } sub iso2utf { $message = $_[0]; $message =~ s/\x{c3}\x{a0}/\x{d7}\x{90}/g; $message =~ s/\x{c3}\x{a1}/\x{d7}\x{91}/g; $message =~ s/\x{c3}\x{a2}/\x{d7}\x{92}/g; $message =~ s/\x{c3}\x{a3}/\x{d7}\x{93}/g; $message =~ s/\x{c3}\x{a4}/\x{d7}\x{94}/g; $message =~ s/\x{c3}\x{a5}/\x{d7}\x{95}/g; $message =~ s/\x{c3}\x{a6}/\x{d7}\x{96}/g; $message =~ s/\x{c3}\x{a7}/\x{d7}\x{97}/g; $message =~ s/\x{c3}\x{a8}/\x{d7}\x{98}/g; $message =~ s/\x{c3}\x{a9}/\x{d7}\x{99}/g; $message =~ s/\x{c3}\x{aa}/\x{d7}\x{9a}/g; $message =~ s/\x{c3}\x{ab}/\x{d7}\x{9b}/g; $message =~ s/\x{c3}\x{ac}/\x{d7}\x{9c}/g; $message =~ s/\x{c3}\x{ad}/\x{d7}\x{9d}/g; $message =~ s/\x{c3}\x{ae}/\x{d7}\x{9e}/g; $message =~ s/\x{c3}\x{af}/\x{d7}\x{9f}/g; $message =~ s/\x{c3}\x{b0}/\x{d7}\x{a0}/g; $message =~ s/\x{c3}\x{b1}/\x{d7}\x{a1}/g; $message =~ s/\x{c3}\x{b2}/\x{d7}\x{a2}/g; $message =~ s/\x{c3}\x{b3}/\x{d7}\x{a3}/g; $message =~ s/\x{c3}\x{b4}/\x{d7}\x{a4}/g; $message =~ s/\x{c3}\x{b5}/\x{d7}\x{a5}/g; $message =~ s/\x{c3}\x{b6}/\x{d7}\x{a6}/g; $message =~ s/\x{c3}\x{b7}/\x{d7}\x{a7}/g; $message =~ s/\x{c3}\x{b8}/\x{d7}\x{a8}/g; $message =~ s/\x{c3}\x{b9}/\x{d7}\x{a9}/g; $message =~ s/\x{c3}\x{ba}/\x{d7}\x{aa}/g; return 1; }