Jeśli każdy ä/å/ö jest reprezentowany na wyjściu przez dwa bajty, możliwe jest również, że kodujesz znaki podwójnie. (Biorąc pod uwagę, że pytanie już pokazuje, jak robisz $dbh->{'mysql_enable_utf8'} = 1;
, podejrzewam, że jest to najbardziej prawdopodobny przypadek.) Inną możliwością, biorąc pod uwagę, że wyświetlasz to na stronie internetowej, jest to, że strona może nie określać, że zestaw znaków to UTF-8 w swoim <head>
a przeglądarka może nieprawidłowo odgadnąć kodowanie znaków, którego używa.
Przyjrzyj się bliżej swojej strukturze aplikacji internetowej, systemowi szablonów itp., aby upewnić się, że wartości są kodowane tylko raz między momentem ich pobrania z bazy danych a dotarciem do przeglądarki użytkownika. Wiele frameworków/silników szablonów (takich jak kombinacja Dancer i TT, których zwykle używam) będzie obsługiwać kodowanie danych wyjściowych automatycznie, jeśli skonfigurujesz je poprawnie, co oznacza, że dane zostaną zakodowane podwójnie, jeśli zostaną jawnie zakodowane przed wysłaniem. /P>