For future reference, mostly to myself, here's how to get irssi working properly with utf-8 terminals, on latin1 channels, through screen.
1. Make sure your terminal is utf-8.
Putty: In the Window->Translation page of the Session configuration, change "Received data assumed to be in which character set" to "UTF-8".
urxvt: Seems to be Utf-8 by default when the locale is. Check "locale". It should look something like this:
2. Start screen in UTF-8 mode
screen -U is your friend. It is possible to switch this live using C-a followed by :utf8 on
- Never ever use irssi 0.8.12 (default in ubuntu for several revisions). If you use ubuntu older than 9.10, install irssi from source (or apropriate .deb if you can find one, I didn't).
- Set the following options:
/set term_charset utf-8
/set recode_out_default_charset iso8859-1
/set recode transliterate off
/set recode fallback iso8859-1
/set recode on
- The above assumes all channels you use on the server has latin1. To only set latin1 recode for a single channel use /recode add #channel iso8859-1
4. Joining a channel with latin1 characters in the name.
This is the tricky bit, and I've yet to find a good solution for it. My best tip so far is to add it to the autojoin list before starting irssi. In ~/.irssi/config add/modify the channels setting:
channels = (
name = "#blåbær";
chatnet = "IRCNet";
autojoin = "yes";
Of course, you will need to edit the file with an editor that saves the file as a latin1 file.