Nếu mỗi ä / å / ö được biểu diễn trong đầu ra bằng hai byte, thì cũng có thể bạn đang mã hóa kép các ký tự. (Cho rằng câu hỏi đã cho thấy bạn đang làm $dbh->{'mysql_enable_utf8'} = 1;
, Tôi nghi ngờ rằng đây là trường hợp có nhiều khả năng xảy ra nhất.) Một khả năng khác, do bạn đang hiển thị mã này trên một trang web, là trang có thể không chỉ định rằng bộ ký tự là UTF-8 trong <head>
và trình duyệt có thể đoán không chính xác ký tự mã hóa mà nó sử dụng.
Hãy xem xét kỹ khung ứng dụng web, hệ thống tạo mẫu, v.v. của bạn để đảm bảo rằng các giá trị chỉ được mã hóa một lần giữa khi chúng được truy xuất từ cơ sở dữ liệu và khi chúng đến được trình duyệt của người dùng. Nhiều khuôn khổ / công cụ mẫu (chẳng hạn như sự kết hợp giữa Dancer và TT mà tôi thường sử dụng) sẽ tự động xử lý mã hóa đầu ra nếu bạn định cấu hình chúng một cách chính xác, có nghĩa là dữ liệu sẽ được mã hóa kép nếu nó được mã hóa rõ ràng trước khi được xuất.