Om varje ä/å/ö representeras i utgången av två byte, är det också möjligt att du dubbelkodar tecknen. (Med tanke på att frågan redan visar att du gör $dbh->{'mysql_enable_utf8'} = 1;
, jag misstänker att detta är det mest troliga fallet.) En annan möjlighet, givet att du visar detta på en webbsida, är att sidan kanske inte anger att teckenuppsättningen är UTF-8 i dess <head>
och webbläsaren kan gissa fel på teckenkodningen den använder.
Ta en närmare titt på ditt ramverk för webbappar, mallsystem etc. för att säkerställa att värdena endast kodas en gång mellan det att de hämtas från databasen och när de når användarens webbläsare. Många ramverk/mallmotorer (som kombinationen av Dancer och TT som jag normalt använder) kommer att hantera utdatakodning automatiskt om du konfigurerar dem korrekt, vilket innebär att data kommer att dubbelkodas om den är explicit kodad innan den matas ut.