in reply to utf8 problems

The problem is indeed related to APR::Table, and is as follows:

So you generate the string with the UTF8 flag set correctly, put it into APR::Table and it loses its flag. So when you retrieve it, you are receiving the individual bytes rather than the multibye character.

The solution to this is

use Encode; my $bytes = get_data_from_APR_TABLE(); my $characters = decode('utf8',$bytes);
This way, you reset the flag and all will be happy again.

The issue is that you need to know which strings are UTF8 before you decode them. I find it easier to make sure that everything that comes into my app all gets converted to UTF8, so I'm only ever dealing with one character set internally.