Pokud je každé ä/å/ö ve výstupu reprezentováno dvěma bajty, je také možné, že znaky kódujete dvojitě. (Vzhledem k tomu, že otázka již ukazuje, že děláte $dbh->{'mysql_enable_utf8'} = 1;
, mám podezření, že toto je nejpravděpodobnější případ.) Další možností, vzhledem k tomu, že to zobrazujete na webové stránce, je, že stránka nemusí ve svém <head>
a prohlížeč mohl nesprávně odhadnout kódování znaků, které používá.
Pečlivě se podívejte na rámec své webové aplikace, systém šablon atd., abyste se ujistili, že hodnoty jsou zakódovány pouze jednou mezi načtením z databáze a okamžikem, kdy se dostanou do prohlížeče uživatele. Mnoho frameworků/šablonových enginů (jako je kombinace Dancer a TT, kterou běžně používám) zpracuje kódování výstupu automaticky, pokud je správně nakonfigurujete, což znamená, že data budou dvojitě zakódována, pokud budou explicitně zakódována před výstupem.