Thanks for the advice on utf8::is_utf8! I stumbled on the same problem, but I am using sqlite3. When reading the string from the database, I can see that it contains the right bytes(*), but the utf8_flag is 0.
How do I convince Perl that the string from the database is really an utf8 string? I think that I need to open the sqlite database with some option so that all strings read from the database will receive the utf8-flag.
I tried utf8::upgrade, but it does not work: on the web page the single accented character shows up as 2 accented characters.
(*)printing to STDERR which is connected to an utf8 terminal shows the correct accented character.