As I feared, the data in your database is messed up.
You have data that's encoded in UTF-8 and data that is encoded in iso-latin-1 in your database.
And you've told your database it's all latin-1. (the swedish collation isn't all that important)
What you tell the database the data is, is mostly important for the (automatic) translations going on, for the length calculation etc.
There is no easy solution to correct this. Data contamination is one of the hardest things to solve.
The best you can do: tell your database everything is UTF-8 (this doesn't change what's stored). And tell your application and database to communicate in UTF-8 as well.
Next you'll have to search your database for invalid UTF-8.
php's md_check_encoding() [php.net...] might be helpful as would the HEX sql function, and manual reviews.